![](/img/trans.png)
[英]Electron require node_modules in main process: Error: Cannot find module ‘linvodb3’
[英]Cannot require node_modules in electron worker process
我正在嘗試在電子中使用網絡工作者。 到目前為止,我能夠從渲染器進程實例化工作進程,但是當我嘗試在工作進程中執行require('some_module')
,該進程因錯誤而崩潰。
找不到模塊“some_module” 。
cjs 加載器顯然找不到我的模塊。 但是,當我從渲染器進程進行相同的require
調用時,我就可以require
模塊。
我已按照此處提到的所有步驟進行操作。 此外,我所設置的選項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目錄中找到我的模塊,該目錄是渲染器和工作目錄的父級
快速查看 worker 中的process
global 會發現process.type
等於worker
而process.argv[1]
is equals --type=renderer
我覺得很奇怪。
元:電子版本=“4.0.0”,平台=“win32”,arch=“x64”,節點版本=“v10.11.0”
在這方面的任何幫助將不勝感激。
好的。 作為一種解決方法,我使用它。
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);
});
上面的代碼片段手動添加路徑節點查找以解析所需的模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.