在运行电子包时,出现了“SPAWN node ENOENT”错误。

3
我已经建立了一个基于node.js,express.js和electron的应用程序,并在Windows操作系统上运行。我通过如何打包电子应用程序教程对electron应用程序进行了打包。
尽管将应用程序打包到win32是成功的,没有任何警告或错误。但是,当我尝试从dist文件夹运行app.exe文件时,主应用程序窗口显示出来,但我无法看到我在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>

现在,在 electron 中,node.js 和 express.js 应用程序在打包之前正常运行顺畅。但是,应用程序在 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()
  })

任何形式的帮助都将不胜感激。

2个回答

1
您可以使用以下代码来执行:

using 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

它完美地工作了。


1
我找到了一种解决方案,不需要使用 SPAWN,在一个使用 Node.js、Express.js 和 Electron 的应用程序中。即使在打包 electron 应用程序之后,它也可以完美地工作。
这是其 GitHub 存储库的链接: 解决方案样板的 GitHub 存储库。 需要记住的一件事是,通过第三方打包器(如 electron-builder)打包 electron 应用程序后,必须将 config.json 文件放入新的 distribution/dist 文件夹中,其中包含打包文件,否则会在应用程序执行时抛出 config.json 未找到错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接