1

我通过应用程序根文件夹中的电子成功运行了我的 Angular 2 应用程序。dist我通过运行将应用程序构建到文件夹中:

ng build --env=prod

然后我就跑:

electron electron.conf.js

我在哪里electron.conf.js运行本地网络服务器来提供文件dist

connect().use(serveStatic(__dirname + '/dist')).listen(8997, function(){
    console.log('Webserver for electron is running on port 8997...');
});
mainWindow.loadURL('http://localhost:8997');

我需要这种方法,因为我使用不会从file:///协议初始化的 gapi.js 和需要http(s)

这很好用,但是当我将电子应用程序打包为 Windows .exe 文件时,我很难成功启动它。当我按以下方式制作 exe 包时(来自应用程序根目录):

electron-packager . MyAppName --platform=win32 --arch=x64

然后启动 MyApp.exe,它失败了:

Cannot find module MyApp/resources/app/index.js

似乎通过 electron-packager 运行的电子正在尝试通过默认file://协议为应用程序提供服务(而所有文件实际上都在MyApp/resources/app/dist/index.js并且应该通过 http 提供服务)。

我如何告诉电子包装器使用我的electron.conf.js哪个将启动我的本地网络服务器?

4

1 回答 1

0

所以,整个技巧是将index.js文件添加到根项目目录,这index.js意味着包含电子应用程序conf,例如:

const electron = require('electron')
var app = electron.app;
app.on('ready', function () {
    mainWindow = new BrowserWindow({ width: 1200, height: 900 });
    mainWindow.loadURL('my-url-here');
})

在使用 electron-packager 捆绑应用程序后,它会在 .exe 启动时index.js复制到resources/app/index.js并用作电子加载配置。

于 2017-06-05T08:29:25.960 回答