12

将电子与 Angular2、Typescript 和 Electron 结合使用,我试图了解如何使用通过 npm 安装的节点模块包。当前的问题是我必须指定模块的位置,例如var module = require('./node_modules/xyz/lib/xyz.js'). 但是随后electron并没有找到xyz的依赖关系,这些依赖关系位于内部./node_modules/xyz/node_modules/yyy并且抱怨./yyy.js找不到。

电子应用程序结构

dist  
├── angular2.dev.js   
├── config.js  
├── index.html  
├── main.js  
├── node_modules  
├── package.json  
└── app.js  
4

4 回答 4

7

更新:

有人问了一个类似的问题,我的回答很可能对您有所帮助:

如果您不将应用node_modules程序根目录下的应用程序目录的路径附加到NODE_PATH变量,它将不起作用。所以你需要做这样的事情:

export NODE_PATH=/PATH/TO/APP/node_modules
electron /PATH/TO/APP

导出时NODE_PATH确保提供绝对路径。


如果require正常时电子无法找到模块,则表明您package.json不包含模块作为依赖项,即使该模块已在您的dist目录下可用。

因此,请确保您在dist目录中并使用

npm install --save xyz

注意--save国旗!

于 2015-07-28T11:16:10.547 回答
1

当前的问题是我必须指定模块的位置,例如 var module = require('./node_modules/xyz/lib/xyz.js')

var module = require('xyz');如果你有它位于./node_modules/ ....你提到的相对路径中,你应该能够做到。

于 2015-06-09T00:44:08.590 回答
1

如果你没有在你的 package.json 中包含这些模块,我发现将它们全部复制到你的版本中的 node_modules 是最简单的。有点像releases > ARCHITECTURE > resources > node_modules

于 2017-02-13T13:16:27.213 回答
0

根据 electron 的文档,将 nodeIntegration 首选项设置为 true。通过添加来做到这一点

webPreferences: {
  nodeIntegration: true
}

到你的createWindow()功能。

于 2021-03-01T16:15:40.930 回答