我已经构建了 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()
})
任何形式的帮助都将受到赞赏。
答案 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
效果很好