我无法打开我打包的 electron 应用程序,它创建了文件夹发布版本,但我无法打开它创建的 exe 文件。我怀疑问题出在 package.json 中。如果我做 npm start 应用程序正在启动和工作。我有点摆弄 package.json 安装像 electron-build 这样的模块我想我当时一定做错了什么。我认为这个问题只是一个错字,但我找不到错字。这是错误
mysecondelectron-proj@1.0.0 package-win electron-packager 。 electron-tutorial-app --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icons/win/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName="Notes"
警告:--asar 不接受任何参数,它只有子属性(请参阅--help)使用 electron v18.2.3 为平台 win32 ia32 打包应用程序警告:找到“electron”但不是作为 devDependency,无论如何修剪 将新应用程序写入 release-builds\electron-tutorial-app-win32-ia32 。这个文件是包。json
{
"name": "mysecondelectron-proj",
"version": "1.0.0",
"description": "My note taking App",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "electron .",
"package-mac": "electron-packager . --overwrite --platform=darwin --arch=x64 --icon=assets/icons/mac/icon.icns --prune=true --out=release-builds",
"package-win": "electron-packager . electron-tutorial-app --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icons/win/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"Notes\"",
"package-linux": "electron-packager . --overwrite --platform=linux --arch=x64 --icon=assets/icons/png/icon.png --prune=true --out=release-builds"
},
"author": "Keegan Albert",
"license": "MIT",
"dependencies": {
"electron": "^18.2.3"
}
}
main.js
const electron = require("electron");
const url = require("url");
const path = require("path");
const {app , BrowserWindow , Menu , ipcMain} = electron;
let mainWindow;
let addWindow;
app.on('ready' , function(){
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
}
});
mainWindow.loadURL(url.format({
pathname: path.join(__dirname , 'mainWindow.html'),
protocol: 'file:',
slashes: true
}))
mainWindow.on('closed' , function(){
app.quit();
})
})
function createAddWindow(){
addWindow = new BrowserWindow({
width: 300,
height:200,
title:'Add Shopping List Item',
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
}
});
addWindow.loadURL(url.format({
pathname: path.join(__dirname, 'addNoteWindow.html'),
protocol: 'file:',
slashes:true
}));
// Handle garbage collection
addWindow.on('close', function(){
addWindow = null;
});
}
const mainMenuTemplate = [{
label: 'File',
submenu: [
{
label: 'Quit',
accelerator: process.platform == 'darwin' ? 'Command+Q' : 'Ctrl+Q',
click(){
app.quit();
}
},
{
label: 'Add Note',
accelerator: process.platform == 'darwin' ? 'Command+N' : 'Ctrl+N',
click(){
createAddWindow();
}
},
{
label:'Clear Items',
accelerator: process.platform == 'darwin' ? 'Command+D' : 'Ctrl+D',
click(){
mainWindow.webContents.send('item:clear');
}
}
]
}]
webPreferences: {
devTools: false
}
if(process.env.NODE_ENV !== 'production'){
mainMenuTemplate.push({
label: 'Developer Tools',
submenu:[
{
role: 'reload'
},
{
label: 'Toggle DevTools',
accelerator:process.platform == 'darwin' ? 'Command+I' : 'Ctrl+I',
click(item, focusedWindow){
focusedWindow.toggleDevTools();
}
}
]
});
}
const mainMenu = Menu.buildFromTemplate(mainMenuTemplate);
Menu.setApplicationMenu(mainMenu);
ipcMain.on('item:add' , function(e , item){
mainWindow.webContents.send('item:add' , item);
addWindow.close();
});
回答1
electron
包应该列为 devDependency 而不是依赖项,我认为这就是为什么在构建它时会对其进行修剪的原因。试试这个包。json:
{
"name": "mysecondelectron-proj",
"version": "1.0.0",
"description": "My note taking App",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "electron .",
"package-mac": "electron-packager . --overwrite --platform=darwin --arch=x64 --icon=assets/icons/mac/icon.icns --prune=true --out=release-builds",
"package-win": "electron-packager . electron-tutorial-app --overwrite --asar --platform=win32 --arch=ia32 --icon=assets/icons/win/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"Notes\"",
"package-linux": "electron-packager . --overwrite --platform=linux --arch=x64 --icon=assets/icons/png/icon.png --prune=true --out=release-builds"
},
"author": "Keegan Albert",
"license": "MIT",
"devDependencies": {
"electron": "^18.2.3",
"electron-packager": "^15.5.1"
}
}