首页 > 解决方案 > 用 Electron 打开一个 Express 应用程序(Nodejs)

问题描述

我有一个用 Express/Nodejs 编写的后端应用程序,以及前端的 angularjs(我知道旧)。我正在尝试在电子窗口中打开此应用程序。搜索后我发现了一些东西,这就是我想出的。

main.js

const {BrowserWindow} = require('electron')
const path = require('path')
require('./server/app.js')

function start() {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600
  });

  mainWindow.loadURL(`http://127.0.0.1:8009/`);
  mainWindow.focus();

};

app.on('ready', start)

./server/app.js

var open = require('open');
var path = require('path')
var express = require('express');
var bodyParser = require('body-parser');
var api = require('./routes/api')();
var fs = require('fs')




var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static(__dirname + '/../client'));




app.get('/api/getPoints/:instance', api.getPoints);
app.get('/api/startDataCollection/', api.startDataCollection);
app.get('/api/getEllipses/:instance', api.getEllipses);
app.get('/api/getOutliers/:instance', api.getOutliers);
app.get('/api/getLabels/:instance', api.getLabels);
app.get('/api/getDescription/', api.getDescription);
app.post('/api/postDescription/', api.postDescription);
app.post('/api/postLabel/', api.postLabel);
app.listen(8009, function () {
  console.log('Server listening at http://127.0.0.1:8009');

});

我通过要求 app.js 模块来启动服务器。该应用程序正常启动,我可以在端口 8009 访问它,但电子窗口没有弹出。

标签: node.jsangularjsexpresselectron

解决方案


app不是声明的变量。你可以试试:

setTimeout(() => start(), 3000);

这将在 Node 启动 3 秒后手动启动电子窗口。如果可行,app请从您需要的模块中导出。

module.exports.app = app;

推荐阅读