Как упаковать экспресс-сервер внутри приложения electron?

#javascript #node.js #express #vue.js #electron

#javascript #node.js #экспресс #vue.js #electron

Вопрос:

В настоящее время я создаю приложение electron с помощью vue-cli-electron-builder. У меня есть локальная база данных mysql и экспресс-сервер.

Как мне связать экспресс-сервер и приложение Electron?

  • Я использовал экспресс-сервер для выборки и хранения данных.
  • Учетные данные пользователя хранятся в базе данных mysql, форма входа вызывает экспресс-сервер.
  • Пользователь может зарегистрироваться с новыми учетными данными, которые снова вызывают локальный экспресс-сервер и сохраняются в локальной базе данных mysql.

Было бы идеально, если бы я мог упаковать все внутри одного приложения и при этом иметь доступ к Express Server.

Запуск приложения electron и отдельного экспресс-сервера работает, но я хочу упаковать как electron, так и express, чтобы я мог выполнять действия только с приложением electron.

Комментарии:

1. Похоже, Electron уже может многое из того, что может Node (почти как Electron, в некотором смысле похож на Express)… github.com/SimulatedGREG/electron-vue/issues/… — кажется, в Интернете много руководств / вопросов по этому поводу.. это, вероятно, ваш лучший выбор — просто погрузитесь и исследуйте.

Ответ №1:

В background.ts вы можете import { fork } from 'child_process' .

И вставьте server.js в /public/ .

 import { fork } from 'child_process'

const isDevelopment = process.env.NODE_ENV !== 'production'

const serverProcess = fork(isDevelopment 
  ? path.resolve(__dirname, "../public/server.js")
  : path.resolve(__dirname, "server.js"))

try {
  serverProcess.stdout!.on("data", console.log)
  serverProcess.stderr!.on("data", console.error)
} catch(e) {}

  

Я тоже когда-то делал это с vue-cli-electron-builder , но это противоречит Reveal.js , поэтому я сделал это вручную.

Однако, что касается MySQL, вам не следует вводить .env или учетные данные в Electron, поскольку люди могут перепроектировать его, нуждаясь в отдельном веб-сервере.

Комментарии:

1. Наткнулся на вопрос этого OP во время исследования возможности объединения Express и Vue в приложении Electron вместе. Однако в последней части вы упомянули о соображениях безопасности при использовании этого подхода. Как вы думаете, это хорошая идея запускать Express вместе в приложении Electron или просто запускать сервер отдельно (если запускать локально)? Потому что я редко вижу какие-либо руководства, в которых говорится об этом подходе.