运行时电子封装中的SPAWN节点ENOENT错误

时间:2017-08-14 06:04:39

标签: javascript node.js express electron-builder

我已经构建了 node.js,express.js app,电子应用以及操作系统 Windows 。我已经通过教程打包了电子应用程序:How to package an electron app

win32的包装成功,没有任何警告或错误 但是,当我尝试从dist文件夹运行app.exe文件时,虽然主应用程序窗口显示但我看不到我在express.js应用程序文件夹中的任何内容。
我的app文件夹结构是:

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应用程序在打包前正常运行。打包后,应用程序不会从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 个答案:

答案 0 :(得分:0)

我在Node.js,Express.js和Electron的应用程序中找到了一个不需要SPAWN的解决方案。即使在打包电子应用程序后也能很好地工作。

以下是其GitHub存储库的链接:

GitHub repository for the solution's boilerplate.

要记住的一件事是,在通过第三方打包商(如electron-builder)打包电子应用程序之后,有必要将 config.json 文件放入新的distribution / dist文件夹中。打包文件存在,否则会在应用程序执行时抛出 config.json not found错误。

答案 1 :(得分:0)

您可以使用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

效果很好