2017-08-05 70 views
2

工人/进程文件我有一个创建子进程的文件,该代码是与此类似:如何以包括的WebPack

var cp = require('child_process'); 

function process() { 
    return cp.fork('./worker'); 
} 

module.exports(process); 

./worker似乎并没有被包含在捆绑。

Error: Cannot find module 'C:\Users\USER\Documents\GitHub\PROJECT\worker' 
    at Function.Module._resolveFilename (module.js:485:15) 
    at Function.Module._load (module.js:437:25) 
    at Function.Module.runMain (module.js:605:10) 
    at startup (bootstrap_node.js:158:16) 
    at bootstrap_node.js:575:3 
module.js:487 
    throw err; 
    ^

我怎样才能确保工人的文件捆绑,以及:运行process功能时,这会导致下面的错误?我希望我的整个项目在一个文件中。

回答

2

有一种可能的解决方法。您可以将所有工作文件复制到dist目录中。让我们说你有一个workers目录中的所有工作文件。所以你的上面的代码稍微改变了一些(包括来自工人direcotory的worker.js)。

var cp = require('child_process'); 
function process() { 
    return cp.fork('./workers/worker'); 
} 

module.exports(process); 

并且要将worker文件夹复制到build/dist文件夹中,可以使用copy-webpack-plugin。在你的情况下,插件可以像这样在webpack配置文件中使用。

var CopyWebpackPlugin = require('copy-webpack-plugin') 

module.exports = { 

//您的进入和输出的配置将是不同的,当然 条目:” ./main.js', 输出:{ 文件名: 'DIST/bundle.js' }, 目标: '节点', 插件:[ 新CopyWebpackPlugin([{ 从 : '工', 到:“DIST /工人 } ]) ] }

您的软件包仍然没有worker.js文件,但该参考将适用于fork方法。

+0

这可以工作,但它仍然需要用户下载多个文件,而不是仅仅捆绑一个。 –

+0

你打算如何使用捆绑包?它是一个图书馆吗? –

+0

它是Node.js和浏览器的[图书馆](https://github.com/wagenaartje/netaptic)。对于Node来说,它并不是一个真正的问题,但浏览器需要多个cdn链接来访问库是很奇怪的。 –