电子包装商:找不到模块

Electron-packager: cannot find module

我尝试使用 electron-Packager 和此命令打包我的应用程序:

electron-packager . FooBar --platform=darwin --arch=x64 --version=0.36.9

(我使用的是 MacOsx)应用程序已创建,但是当我 运行 它时,我会看到一个弹出窗口显示:

未捕获的异常:

Error: Cannot find module '/Users/myUser/myApp/FooBar-darwin-x64/FooBar.app/Contents/Resources/app/app:/host/menu.html'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:289:25)
    at Object.<anonymous> (/Users/myUser/myApp/FooBar-darwin-x64/FooBar.app/Contents/Resources/atom.asar/browser/lib/init.js:158:8)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Function.Module.runMain (module.js:457:10)
    at startup (node.js:151:18)
    at node.js:1007:3

在此文件夹中:“/Users/myUser/myApp/FooBar-darwin-x64/FooBar.app/Contents/Resources/app”有指向 html 文件 "menu.html" 的条目,但电子似乎无法找到它...

这是我的 app.js:

var app = require('app');  // Module to control application life.
var BrowserWindow = require('browser-window');  // Module to create native browser window.

var mainWindow = null;


// This method will be called when Electron has done everything
// initialization and ready for creating browser windows.
app.on('ready', function() {

  // Create the browser window.
  mainWindow = new BrowserWindow({width: 1024, height: 768});

  // and load the index.html of the app.
  mainWindow.loadUrl('file://' + __dirname + '/menu.html');

  mainWindow.openDevTools({detach: true});

  // Emitted when the window is closed.
  mainWindow.on('closed', function() {
    mainWindow = null;
  });

});

您对可能出现的问题有什么想法吗?

谢谢。

您可以尝试两件事:

  • 确保在生产构建中 运行 需要的每个节点模块都添加到 package.json 中的 dependencies 中。例如:npm install <module_name> --save
  • 当 --asar=false 时它是如何工作的(更多信息在 https://github.com/electron-userland/electron-packager

对我来说,问题是模块依赖项在 package.json

中的 "devDependencies" 中列出

将它们移动到 "dependencies" 和 运行 npm install 再次解决了问题。

所以我遇到了同样的问题。当我 cd 进入我的项目文件夹并执行

时,我的解决了

npm i -D electron@latest

有时添加 package.json 和 npm install 将无法正确安装。请让我知道它是否适合你。

对我有用的是修改对主应用程序文件的引用,即:main.js 用于较新的电子版本或 app.js 用于 package.json 中旧版本的电子,如下所示:

"main": "app.js"

对我来说,我不得不重建电子应用程序。使用 Ionic,首先删除 /electron 文件夹,然后 运行:

npx cap add electron