运行 上电子包中的 SPAWN 节点 ENOENT 错误

SPAWN node ENOENT error in electron package on run

我构建了一个 node.js、express.js 应用程序、electron 应用程序和操作系统 Windows。我已经通过教程打包了electron app:How to package an electron app

win32打包成功,无任何警告或错误。
但是,当我尝试 运行 dist 文件夹中的 app.exe 文件时,虽然主应用程序 window 出现了,但我看不到 express.js 应用程序中的任何内容文件夹。
我的应用程序文件夹结构是:

app-root<br>
  - express-app
    - bin
      - www
    - node_modules
    - public
    - routes
    - views
    - app.js
    - package.json
  - node_modules
  - build
  - index.html
  - main.js
  - package.json
  - start-electron.js
  - dist<br>

现在 node.js, express.js app in electron 运行 打包前正常运行。应用程序打包后没有从exe文件中运行

这是包 .exe 文件的控制台错误:

events.js:163 Uncaught Error: spawn node ENOENT
at exports._errnoException (util.js:1050:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:367:16)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)

我在 index.html 中有 SPAWN 函数:

  spawn = require("child_process").spawn,
  app = require('electron').remote.app,
  node = spawn("node", ["./express-app/bin/www"], {
    cwd: app.getAppPath()
  })

我们将不胜感激。

我找到了一个不需要 SPAWN 的解决方案,在 Node.js、Express.js 和 Electron 的应用程序中。即使在打包 electron 应用程序后也能完美运行。

这里是 link 到它的 GitHub 存储库:

GitHub repository for the solution's boilerplate.

要记住的一件事是,在通过像 electron-builder 这样的第三方打包器打包 electron 应用程序后,有必要将 config.json 文件放入存在打包文件的新 distribution/dist 文件夹,否则它会在应用程序执行时抛出 config.json 未找到错误。

您可以使用 exec 使用以下代码:

const exec = require('child_process').exec;
const node = exec("path/to/node " + app.getAppPath() + 'YOUR_APP', (err, stdout) => {console.log(stdout)});

path/to/node 在我的例子中 => /usr/local/bin/node

完美运行