如何在Electron中使用node_modules?

时间:2015-06-05 10:20:31

标签: node.js typescript angular electron typescript1.5

将电子与Angular2,Typescript和Electron结合使用我试着找出如何使用通过npm安装的节点模块包。 目前的问题是我必须指定模块的位置,如var module = require('./node_modules/xyz/lib/xyz.js')。但是,电子找不到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 个答案:

答案 0 :(得分:7)

<强>更新

已经询问了类似的questionmy answer最有可能对您有所帮助:

如果您未将应用根目录下的应用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 标志!

答案 1 :(得分:1)

  

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

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

答案 2 :(得分:1)

如果你没有在你的package.json中包含这些模块,我发现将它们全部复制到你的发行版中的node_modules是最容易的。它类似于releases > ARCHITECTURE > resources > node_modules

答案 3 :(得分:0)

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

webPreferences: {
  nodeIntegration: true
}

到您的 createWindow() 函数。