用 Electron 打开一个 Express 应用程序(Nodejs)

Posted

技术标签:

【中文标题】用 Electron 打开一个 Express 应用程序(Nodejs)【英文标题】:Opening an Express App (Nodejs) with Electron 【发布时间】:2020-08-16 08:32:05 【问题描述】:

我有一个用 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 访问它,但电子窗口没有弹出。

【问题讨论】:

【参考方案1】:

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

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

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

module.exports.app = app;

【讨论】:

以上是关于用 Electron 打开一个 Express 应用程序(Nodejs)的主要内容,如果未能解决你的问题,请参考以下文章

如何运行require(“express”);来自Electron App中的TypeScript角度组件

Express Electron 不能需要本地 Js 文件

自动重新加载对 React 所做的更改,使用 Electron 的 Express Webpack

在 Electron 中单击时 ReactJs 无法调用 express API

electron应用以管理员权限启动

Electron | Electron中打开和关闭子窗口以及子窗口向父窗口传值