簡體   English   中英

在電子工作進程中不能要求 node_modules

[英]Cannot require node_modules in electron worker process

我正在嘗試在電子中使用網絡工作者。 到目前為止,我能夠從渲染器進程實例化工作進程,但是當我嘗試在工作進程中執行require('some_module') ,該進程因錯誤而崩潰。

找不到模塊“some_module”

cjs 加載器顯然找不到我的模塊。 但是,當我從渲染器進程進行相同的require調用時,我就可以require模塊。

我已按照此處提到的所有步驟進行操作。 此外,我所設置的選項nodeIntegrationInWorker: true ,我可以require像節點內置模塊調用fs ,沒有任何問題。


一些觀察

  1. __dirname在渲染過程中解析為

    root/node_modules/electron/dist/resources/electron.asar/renderer

    並在工作進程中解決

    root/node_modules/electron/dist/resources/electron.asar/worker

    就我完成閱讀而言,require 函數應該能夠在node_modules目錄中找到我的模塊,該目錄是渲染器工作目錄的父級

  2. 快速查看 worker 中的process global 會發現process.type等於workerprocess.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM