node.js - 使用 Electron-packager 时,我们可以在没有安装 Node 的 Mac 上启动 Node 命令吗?

标签 node.js electron child-process electron-packager

当我使用 Electron 打包器打包 Electron 应用程序时。该应用程序生成一个使用“node”命令的子进程。现在,如果我尝试在未安装 Node 的系统中启动我的应用程序,该应用程序可以工作吗?

我一直在努力实现这一目标,但面临各种问题, Electron 社区建议我使用 fork 方法、spawn 方法以及“Process.execPath”作为命令,并设置 ELECTRON_RUN_AS_NODE 变量,但似乎对我来说没有任何作用。

现在,完成所有这些操作后,我问自己,我是否确实需要在系统上安装 Node 才能运行该应用程序?或者是否真的有一种方法可以将父环境(我相信有 Node )传递给子进程?如果是的话我在这里缺少什么?

需要注意的是,当从 GUI 应用程序运行时,我使用“fixpath()”在 macOS 上设置 $PATH。不确定这是否会扰乱我的代码中的某些内容。 https://www.npmjs.com/package/fix-path

请在下面找到我的代码:

'use strict'
 const fixPath = require('fix-path');

 let func = () => {
   fixPath();   
   const child = childProcess.exec('node scriptPath --someFlags', {
     detached: true, 
     stdio: 'ignore',
     env: {
       ELECTRON_RUN_AS_NODE: 1,
     }
 });
 child.on('error', (err) => {
   console.log("\n\t\tERROR: spawn failed! (" + err + ")");
 });

 child.stderr.on('data', function(data) {
   console.log('stdout: ' +data);
 });

 child.on('exit', (code, signal) => {
   console.log(code);
   console.log(signal);
 });

 child.unref();
 }

最佳答案

是的,我们可以运行一个打包的应用程序,即使在没有安装 Node 的系统上也可以运行子 Node 进程。可以使用“fork”方法并通过设置 ELECTRON_RUN_AS_NODE 环境变量来运行 Node 进程。请查找下面的示例代码。

 let func = () => {
   const child = childProcess.fork(path, args, 
   {
     detached: true, 
     stdio: 'ignore',
     env: {
        ELECTRON_RUN_AS_NODE: 1
     }
   }

 });

 child.on('error', (err) => {
   console.log("\n\t\tERROR: spawn failed! (" + err + ")");
 });

 child.on('exit', (code, signal) => {
   console.log(code);
   console.log(signal);
 });

 child.unref();

关于node.js - 使用 Electron-packager 时,我们可以在没有安装 Node 的 Mac 上启动 Node 命令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51771754/

相关文章:

javascript - 错误 : bcrypt_lib. Node 不是有效的 Win32 应用程序

typescript - 如何为 Electron 安装 typescript 定义?

electron - Electron -如何保存信息?

JavaScript 无法一次接收一行子流

node.js - 用于授权从 React Native 应用程序到 Node 服务器的 API 调用的推荐策略是什么?

javascript - 代码中的大型 SQL OR 语句或过滤器?

python - 为什么我的Node.js gRPC客户端需要3秒才能将请求发送到Python gRPC服务器?

python - 在 gulp 中运行带参数的命令

node.js - 使用 fork 进行错误处理

javascript - Node.js - 在字符串之外使用模板文字