使用 electron-packager 时,我们可以在没有安装节点的 mac 上启动节点命令吗?
Can we launch a node command on a mac without node installed when using electron-packager?
当我使用 electron-packager 打包 electron 应用程序时。该应用程序生成一个使用 'node' 命令的子进程。现在,如果我尝试在未安装节点的系统中启动我的应用程序,该应用程序是否有效?
我一直在努力实现这一目标并面临各种问题,电子社区建议我使用 fork 方法,以 'Process.execPath' 作为命令的 spawn 方法并设置 ELECTRON_RUN_AS_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();
}
是的,即使在没有安装节点的系统上,我们也可以 运行 一个打包的应用程序,它 运行 是一个子节点进程。可以使用 'fork' 方法 运行 节点进程并通过设置 ELECTRON_RUN_AS_NODE env 变量。请在下面找到示例代码。
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();
当我使用 electron-packager 打包 electron 应用程序时。该应用程序生成一个使用 'node' 命令的子进程。现在,如果我尝试在未安装节点的系统中启动我的应用程序,该应用程序是否有效?
我一直在努力实现这一目标并面临各种问题,电子社区建议我使用 fork 方法,以 'Process.execPath' 作为命令的 spawn 方法并设置 ELECTRON_RUN_AS_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();
}
是的,即使在没有安装节点的系统上,我们也可以 运行 一个打包的应用程序,它 运行 是一个子节点进程。可以使用 'fork' 方法 运行 节点进程并通过设置 ELECTRON_RUN_AS_NODE env 变量。请在下面找到示例代码。
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();