【问题标题】:How to use node_modules within Electron?如何在 Electron 中使用 node_modules?
【发布时间】:2015-08-20 06:16:14
【问题描述】:

将 electron 与 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  

【问题讨论】:

  • 原来我用npm安装模块,但是我用Angular2 JSPM来加载模块。使用jspm install npm:xyz 安装模块时,我可以在电子中要求模块,例如 require('xyz') 。
  • 我想我知道问题出在哪里,有人问过类似的问题,我认为this answer 可能会对您有所帮助!

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


【解决方案1】:

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

webPreferences: {
  nodeIntegration: true
}

到您的createWindow() 函数。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      更新:

      已询问过类似的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 标志!

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2018-02-07
          • 2019-09-15
          • 2022-01-04
          • 2017-05-07
          • 2020-08-07
          • 2017-06-16
          • 1970-01-01
          • 2021-08-07
          相关资源
          最近更新 更多