电子包装商:找不到模块
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
我尝试使用 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