我有一个创建子进程的文件,代码类似这样:
var cp = require('child_process');
function process () {
return cp.fork('./worker');
}
module.exports(process);
但是 ./worker
似乎没有包含在包中。在运行 process
函数时会导致以下错误:
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;
^
如何确保工作文件也被捆绑?我希望我的整个项目都在一个文件中。
最佳答案
有一个可能的解决方法。您可以将所有工作文件复制到 dist 目录中。假设您将所有工作文件都放在 workers
目录中。因此,您的上述代码略有变化(包括 workers 目录中的 worker.js)。
var cp = require('child_process');
function process () {
return cp.fork('./workers/worker');
}
module.exports(process);
要将 workers 文件夹复制到您的 build/dist 文件夹,您可以使用 copy-webpack-plugin .在您的情况下,可以在 webpack 配置文件中像这样使用插件。
var CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
//你输入和输出的配置当然会不同 条目:'./main.js', 输出: { 文件名:'dist/bundle.js' }, 目标:' Node ', 插件:[ 新的 CopyWebpackPlugin([ { 来自:' worker ', 到:'dist/workers' } ]) ]
你的 bundle 仍然没有 worker.js 文件,但引用将适用于 fork
方法。
关于javascript - 如何使用 webpack 包含 worker/process 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521024/