gpt4 book ai didi

node.js - 来自 Electron 渲染器进程的 require() Node 模块,通过 HTTP 提供服务

转载 作者:IT老高 更新时间:2023-10-28 23:26:53 32 4
gpt4 key购买 nike

通常,在 Electron 应用程序中,您可以require 来自主进程和渲染器进程的 Node 模块:

var myModule = require('my-module');

但是,如果页面是通过 HTTP 而不是从本地文件系统加载的,这似乎不起作用。换句话说,如果我打开一个这样的窗口:

win.loadURL(`file://${__dirname}/index.html`);

我可以require一个 Node 模块而不会出现问题。但如果我改为打开这样的窗口:

win.loadURL(`http://localhost:1234/index.html`);

我不再可以在我的网页中 require Node 模块 - 我在网页的控制台中收到 Uncaught Error: Cannot find module 'my-module'。有没有办法在通过 HTTP 提供的 Electron 页面中使用 Node 模块?


一点背景:我的公司正在构建一个应用程序,该应用程序需要能够作为 Web 应用程序在 Electron shell 中托管。为了使这两个环境更简单和一致,我的 Electron 应用程序启动一个本地 Web 服务器并打开托管在 http://localhost:1234 的应用程序。现在我希望能够使用 electron-spell-check-provider 在应用程序中添加拼写检查/拼写建议。 .这个模块需要在渲染器进程中导入和初始化,所以我试图在我的网页中 require('electron-spell-check-provider') ,但这失败了 找不到模块错误。

最佳答案

终于想通了。在主进程中,找出node_modules目录的绝对路径,如:

var nodeModDir = require.resolve('some-valid-module');
var dirnm = 'node_modules';
var pos = nodeModDir.lastIndexOf(dirnm);
if(pos != -1)
nodeModDir = nodeModDir.substr(0, pos+dirnm.length+1);

现在通过一些 IPC 获取渲染器进程的路径。最后,在渲染器中,您现在可以要求使用绝对路径:

var mymod = require(nodeModDir+'some-valid-module');

electron 1.6.7 非常适合我。

关于node.js - 来自 Electron 渲染器进程的 require() Node 模块,通过 HTTP 提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370530/

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