提问
我想在电子行业使用Web Workers。到目前为止,我能够从渲染器进程示例化工作进程,但是当我尝试在工作进程中执行require('some_module')
时,进程崩溃并出错。
- 找不到模块'some_module'*。
cjs加载器显然找不到我的模块。但是,当我从渲染器进程中调用相同的require
时,我能够require
模块。
我已经遵循了here提到的所有步骤。我还设置了nodeIntegrationInWorker: true
选项,可以毫无问题地对节点内置模块(如fs
)进行require
调用。
几点观察
__dirname
在渲染过程中解析为
- root/node_modules/electron/dist/resources/electron.asar/renderer*
在worker进程中解析为
- root/node_modules/electron/dist/resources/electron.asar/worker*
就我所做的阅读而言,require函数应该能够在node_modules目录中找到我的模块,该目录是renderer和worker目录的父目录
1.快速查看一下worker中的process
全局变量,就会发现process.type
等于worker
,而process.argv[1]
等于--type=renderer
,我觉得这很奇怪。
**Meta:**Electron version =“4.0.0”,platform =“win32”,arch =“x64”,node version =“v10.11.0”
在这方面的任何帮助将不胜感激。
2条答案
按热度按时间rt4zxlrg1#
好吧,作为一种变通方法,我用这个。
字符串
上面的代码段手动添加路径节点查找以解析所需的模块。
5q4ezhmt2#
你不需要做上面的事情。只需从app.asar的node_modules中执行一个require命令:
字符串
谢谢你以后??