我正在尝试在电子领域使用网络工作者。到目前为止,我能够从渲染器进程实例化工作进程,但是当我尝试在工作进程中执行require('some_module')
时,该进程崩溃并显示错误。
找不到模块'some_module'。
cjs加载器显然找不到我的模块。但是,当我从渲染器进程进行相同的require
调用时,就可以require
该模块。
我已经按照here提到的所有步骤进行操作。同样,我已经设置了选项nodeIntegrationInWorker: true
,并且可以毫无问题地对require
之类的节点内置模块进行fs
调用。
[__dirname
在呈现的过程中解析为
root / node_modules / electron / dist / resources / electron.asar / renderer
并且在工作进程中解析为
root / node_modules / electron / dist / resources / electron.asar / worker
就我已经阅读了require函数而言,应该能够在node_modules目录中找到我的模块,该目录是renderer和worker目录的父目录]] >
快速查看工作人员中的process
全局变量会发现process.type
等于worker
,而process.argv[1]
等于--type=renderer
,我觉得很奇怪。
Meta:
在这方面的任何帮助,将不胜感激。
问题,我正在尝试在电子领域使用网络工作者。到目前为止,我能够从渲染器进程实例化工作进程,但是当我尝试在工作进程中执行require('some_module')时...
好作为解决方法,我使用它。
const paths = [
path.join(process.resourcesPath, 'app.asar', 'node_modules'),
path.join(process.resourcesPath, 'app', 'node_modules'),//when asar is disabled
process.resourcesPath.replace(/electron[\\/]dist[\\/]resources/g, '')
];
paths.map((path) => {
global.require.main.paths.push(path);
});