【问题标题】:Electron require node_modules in main process: Error: Cannot find module ‘linvodb3’Electron 在主进程中需要 node_modules:错误:找不到模块“linvodb3”
【发布时间】:2017-04-02 15:49:27
【问题描述】:

对于 angular2/electron 学习应用程序,我使用 LinvoDB 进行基于 angular2-electron-starter 种子的持久数据存储,该种子带有两个 package.json,一个在 root/一个在 root/electron。打包成功后app.exe会抛出这个错误:

主进程发生 JavaScript 错误

未捕获的异常:

错误:找不到模块“linvodb3”

到目前为止我尝试过:

  • 在 / 和 /electron 中安装 linvodb3 (npm install linvodb3 --save)
  • 使用 --build-from-source 安装 linvodb3
  • 在两个目录中使用电子重建
  • apm 安装
  • 多次卸载和 类似问题中推荐的各种软件包的安装。

  • var LinvoDB = require('linvodb3');在相应的模块和main.js中

  • const LinvoDB = require('electron').remote.require('linvodb3');
  • var LinvoDB = require('linvodb3');在 index.html 中类似于 jQuery 问题。

我读到但无法尝试的唯一一件事是手动设置 NODE_PATH,因为我找不到指定的文件。

【问题讨论】:

  • 检查手动将 node_modules/invodb3 文件夹放入 {buildfolder}/resources/app 文件夹是否适合您。
  • @JensHabegger:非常感谢,这至少是第一次至少错误改变,现在找不到leveldown lib。我对这就是缺少的 NODE_PATH 会做什么吗?有没有办法在这个 webpack/angular-cli 版本中设置它。我已经认为它可能与那里缺少的 webpack.config 有关。
  • 老实说,我还没有找到让 webpack 管理这些电子依赖项的方法。由于我只是真正使用电子定位器,因此我已将相应的模块添加到我的 /src/ 中,在那里它也被复制了。不过,我会对任何 真正的 解决方案感到好奇。

标签: javascript webpack electron node-modules


【解决方案1】:

正如@JensHabegger 所建议的,最初的问题可以通过将 node_modules 从 /electron 子文件夹复制到 /dist 来解决,我通过 /package.json 中的脚本来解决这个问题。

没有找到 leveldown 库的更深层次的问题无法通过 electron-rebuilt 解决,但使用 /electron/package.json 中的 postinstall 脚本:

"scripts": {
    "start": "electron .",
    "postinstall": "cd node_modules/leveldown && node-gyp rebuild --target=1.4.8 --arch=x64 --dist-url=https://atom.io/download/atom-shell"
  },

【讨论】:

    猜你喜欢
    • 2020-06-24
    • 2021-06-11
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2018-12-05
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多