【问题标题】:Cannot require node_modules in electron worker process在电子工作进程中不能要求 node_modules
【发布时间】:2019-06-22 04:55:32
【问题描述】:

问题

我正在尝试在电子中使用网络工作者。到目前为止,我能够从渲染器进程中实例化工作进程,但是当我尝试在工作进程中执行 require('some_module') 时,进程会因错误而崩溃。

找不到模块“some_module”

cjs 加载器显然找不到我的模块。但是,当我从渲染器进程发出相同的require 调用时,我可以require 模块。

我已按照here 中提到的所有步骤进行操作。我还设置了选项nodeIntegrationInWorker: true,我可以毫无问题地对节点内置模块(如fs)进行require 调用。


一些观察

  1. __dirname在渲染过程中解析为

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

    并且在工作进程中解析为

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

    据我阅读,require 函数应该能够在 node_modules 目录中找到我的模块,该目录是 renderer 的父目录>工人目录

  2. 1234563

电子版本=“4.0.0”,平台=“win32”,拱=“x64”,节点版本=“v10.11.0”

我们将不胜感激。

【问题讨论】:

  • 有同样的问题。电子太可怕了。文档很差。

标签: javascript node.js electron web-worker


【解决方案1】:

好的。作为一种解决方法,我使用它。

    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);
    });

上面的 sn -p 手动添加了路径节点查找来解析所需的模块。

【讨论】:

    猜你喜欢
    • 2018-11-26
    • 2020-09-07
    • 2018-04-03
    • 1970-01-01
    • 2011-07-11
    • 2018-04-22
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多