将电子与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
答案 0 :(得分:7)
<强>更新强>
已经询问了类似的question,my 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()
函数。