javascript - 在 Linux 上使用 asar 运行电子应用程序 /Cannot GET index.html
问题描述
我在 /app/resources/app.asar 下构建了一个带有 asar 包的电子应用程序。当我在 linux 中运行这个应用程序时,我看到应用程序没有启动并且它抛出/Cannot GET index.html。
该应用程序是为通过在电子框架内运行的 nodejs 服务器提供角度发行版而构建的。
这就是在 packge.json 中构建应用程序的方式
"builderForLinx1": "electron-packager --out linx64 --overwrite --platform linux --appname myApp . --executable-name ClientSettings --asar"
这是 main.js 调用 app.js(nodejs 条目)
const { app, BrowserWindow } = require('electron')
const path = require('path');
const serverJS = require('./app');//node server
let win;
function createWindow () {
// Create the browser window.
win = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
webviewTag: true
},
show:false
})
win.loadURL("http://localhost:4440/index.html");
win.setMenuBarVisibility(false);
win.on('closed', function () {
win = null
})
win.once('ready-to-show', () => {
win.show();
win.maximize();
})
}
app.on('ready', createWindow)
**app.js**
var express = require('express')
var app = express()
var http = require('http');
var path = require('path');
const routes = require('./server/index.route');
const bodyParser = require('body-parser');
let port = 4440;
app.set('port', port);
let server;
server = http.createServer(app);
server.on('listening', onListening);
server.on('error', onError);
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'?'pipe ' + addr: 'port ' + addr.port;
console.log('Listening on ' + bind);
}
server.listen(port);
app.use( express.static(path.join(__dirname, 'dist/Angular-electron')))
// respond with "hello world" when a GET request is made from homepage
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'?'Pipe ' + port:'Port ' + port;
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
routes(app);
module.exports = app;
但是,如果我在没有 -asar 的情况下构建应用程序,则应用程序会按预期启动!我这样做只是为了减少文件内容。这是要求的一部分。
解决方案
推荐阅读
- xpath - NReco Videoinfo 的 XPath 元素文档
- android - Android MediaPlayer java.io.IOException: Prepare failed.: status=0x1
- r - 汇总日期时间以汇总在某些“重复”条件下花费的时间
- html - 如何对齐和距离 td 值
- python - 是否可以使用 break 语句重构此函数的代码架构?
- php - 将元素添加到数组以在另一个数组中使用
- javafx - 验证控件中的可观察值
- node.js - 如何在并发 AWS lambda 函数中管理 Postgres 连接?
- excel - 除非在过滤器标准表上,否则 VBA 清除宏不起作用
- javascript - 在屏幕上轻拂一个元素 (HTML5/JQuery)