node.js在线程中require路径问题

打包后在另一设备的生产环境运行时,在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了。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注