【发布时间】:2017-01-15 04:21:51
【问题描述】:
通常,在 Electron 应用程序中,您可以在主进程和渲染器进程中 require 节点模块:
var myModule = require('my-module');
但是,如果页面是通过 HTTP 而不是从本地文件系统加载的,这似乎不起作用。换句话说,如果我打开一个这样的窗口:
win.loadURL(`file://${__dirname}/index.html`);
我可以require 一个节点模块没有问题。但如果我改为打开这样的窗口:
win.loadURL(`http://localhost:1234/index.html`);
我不再可以在我的网页中使用require 节点模块 - 我在网页的控制台中获得了Uncaught Error: Cannot find module 'my-module'。有没有办法在通过 HTTP 提供的 Electron 页面中使用节点模块?
一点背景:我的公司正在构建一个应用程序,该应用程序需要能够作为 Web 应用程序和在 Electron shell 中托管。为了使这两个环境更简单和一致,我的 Electron 应用程序启动了一个本地 Web 服务器并打开托管在 http://localhost:1234 的应用程序。现在我希望能够使用electron-spell-check-provider 在应用程序中添加拼写检查/拼写建议。这个模块需要在渲染器进程中导入和初始化,所以我试图在我的网页中require('electron-spell-check-provider'),但这失败了Cannot find module错误。
【问题讨论】:
-
我不确定,但似乎 http 版本正在为文件获取一些不同的实际路径。尝试通过以下方式更改 require 语句:=> "require('./electron-spell-check-provider')"
-
你试过了吗:
require('electron').remote.require('electron-spell-check-provider')? -
您最终解决了这个问题吗? remote.require() 对我有用,但这并不总是一个好的解决方案。还有其他方法吗?
标签: node.js require electron node-modules