Javascript Electron build应用程序未启动express server
我正在构建一个应用程序,当我处于开发者模式时,一切都很好。一切都按它应该的方式运作。但当我用electron builder打包我的应用程序时,应用程序会打开,但无法启动express server,并且应用程序无法正常工作 这是我的package.json代码Javascript Electron build应用程序未启动express server,javascript,express,server,electron,Javascript,Express,Server,Electron,我正在构建一个应用程序,当我处于开发者模式时,一切都很好。一切都按它应该的方式运作。但当我用electron builder打包我的应用程序时,应用程序会打开,但无法启动express server,并且应用程序无法正常工作 这是我的package.json代码 { "name": "artros", "version": "1.0.0", "description": "Artros", "author": "MC3", "license": "ISC", "main"
{
"name": "artros",
"version": "1.0.0",
"description": "Artros",
"author": "MC3",
"license": "ISC",
"main": "start.js",
"scripts": {
"pack": "build --dir",
"dist": "build"
},
"build": {
"appId": "com.artros.app",
"productName": "Artros",
"win": {
"target": "portable",
"icon": "build/icon.ico"
},
"mac": {
"target": "dmg"
}
},
"dependencies": {
"body-parser": "^1.18.3",
"ejs": "^2.5.7",
"electron-pdf-window": "^1.0.12",
"express": "^4.16.2",
"multer": "^1.3.0",
"nodemailer": "^4.6.4",
"path": "^0.12.7"
},
"devDependencies": {
"electron": "^1.8.2"
}
}
这是我的start.js代码
const cluster = require('cluster');
if (cluster.isMaster) {
require('./main.js'); // your electron main file
cluster.fork();
} else {
require('./app.js'); // your server code
}
还有我的main.js代码
var electron = require('electron');
var browserWindow = electron.BrowserWindow;
var app = electron.app;
app.on('ready', function(){
var appWindow;
//appWindow
appWindow = new browserWindow({
width:1120,
height:620,
webPreferences: {
plugins: true
},
icon: __dirname + '/public/icon/icon.png'
});
appWindow.loadURL('file://' +__dirname + '/public/prva.html');
//appWindow.webContents.openDevTools();
});
// close app after all windows are closed
app.on('window-all-closed', () => {
app.quit()
})
如果有人知道问题出在哪里,请把它贴出来。谢谢我也经历过类似的事情。挑战在于,如果使用fork(),应用程序路径会发生变化。因此,我建议您在所有文件中检查
\uuu dirname
,尤其是在分叉过程中的文件(例如app.js)。如果其中一些不再有意义,我不会感到惊讶。我找到了解决方案。问题其实出在我的app.js代码中。有一次我需要添加(path.join(uu dirname,'./path/to/file')。伙计们,谢谢你们的帮助。我将视图和静态路径更改为app.set('views',path.join('uu dirname',views');和app.use(express.static(path.join(uu dirname,'public'));但仍然没有成功。在没有path.join和_dirnameI之前,我的意思是首先调试应用程序,不改变任何内容。1.为你的应用做一个简单的例子。2.添加一个console.log(uuu dirname);到每个文件(特别是从fork开始)3。打包应用程序后,检查控制台中的结果路径是否有意义。