打包后在另一设备的生产环境运行时,在worker.js中require(非node.js自带模块时)通常会发生Error: Cannot find module xxx等类似的错误。
因为找不到正确的路径。
以electron为例:
let isDev = !app.isPackaged; //判断是否开发环境
let modulePath=(isDev?'':process.resourcesPath.replace(/\\/g,'/')+'/app/node_modules/'); //非开发环境时使用resourcesPath
console.log(modulePath);
在require时,这样做:
let workerCode=`
const { createLogger, format, transports } = require('${
modulePath}winston');
`
let worker = new Worker(workerCode, { eval: true });
这样便可正常在线程中require了。