gpt4 book ai didi

javascript - 不能在 Electron 工作进程中需要node_modules

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:28 25 4
gpt4 key购买 nike

问题

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

Cannot find module 'some_module'.

cjs 加载器显然找不到我的模块。但是,当我从渲染器进程进行相同的 require 调用时,我能够 require 该模块。

我已遵循提到的所有步骤 here 。此外,我还设置了选项nodeIntegrationInWorker: true,并且可以毫无问题地对 Node 内置模块(如 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目录中找到我的模块,该目录是渲染器worker目录的父目录

  2. 快速查看worker中的process全局发现,process.type等于worker,而process.argv[1]等于--type=renderer,我觉得很奇怪。

<小时/>

:Electron 版本 =“4.0.0”,平台 =“win32”,arch =“x64”, Node 版本 =“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);
});

上面的代码片段手动添加路径 Node 来解析所需的模块。

关于javascript - 不能在 Electron 工作进程中需要node_modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com