运行 来自 Electron 打包应用程序的 CLI 命令
Run a Cli command from an Electron packaged app
我正在用 Electron and Nativefier 包编写 Mac OSX GUI,当我 运行 在安装了 Nodejs 的机器上(全局)打包应用程序时,一切工作正常。
在没有安装 Nodejs 的机器上找不到命令。
我在 Electron 中使用 Nativefier Cli,并带有完整的 cli 路径:
var cliCmd = '"'+app.getAppPath()+'/node_modules/nativefier/lib/cli.js"';
const child_process = require('child_process');
child_process.exec(cliCmd+' --name "App Name" "http://appname.tld" --platform darwin --arch x64 --electron-version "0.36.6"', function (error, stdout, stderr) {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
我收到此错误:"env: node: No such file or directory"
检查了 app.getAppPath()
目录,它是正确的。
此外,我尝试传递 env
和 cwd
参数,但没有成功。
child_process.exec(cliCmd+' --name "App Name" "http://appname.tld" --platform darwin --arch x64 --electron-version "0.36.6"',
{
env: {"ATOM_SHELL_INTERNAL_RUN_AS_NODE":"1"},
cwd: app.getAppPath()
},
function (error, stdout, stderr) {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
我做错了什么?我也尝试了 child_process.spawn()
,但还是没有成功。
我需要做什么才能在没有安装 nodejs 的机器上从我的应用程序调用打包的 node_module/cli?
我在 process
对象中找到了 execPath
现在我可以在没有全局安装 nodejs 的机器上执行 nodejs 命令。它使用的是 Electron 的内置版本。
child_process.exec(process.execPath+' '+cliCmd+' --name "App Name" "http://appname.tld" --platform darwin --arch x64 --electron-version "0.36.6"',
{
env: {"ATOM_SHELL_INTERNAL_RUN_AS_NODE":"1"},
cwd: app.getAppPath()
},
function (error, stdout, stderr) {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
我正在用 Electron and Nativefier 包编写 Mac OSX GUI,当我 运行 在安装了 Nodejs 的机器上(全局)打包应用程序时,一切工作正常。
在没有安装 Nodejs 的机器上找不到命令。
我在 Electron 中使用 Nativefier Cli,并带有完整的 cli 路径:
var cliCmd = '"'+app.getAppPath()+'/node_modules/nativefier/lib/cli.js"';
const child_process = require('child_process');
child_process.exec(cliCmd+' --name "App Name" "http://appname.tld" --platform darwin --arch x64 --electron-version "0.36.6"', function (error, stdout, stderr) {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
我收到此错误:"env: node: No such file or directory"
检查了 app.getAppPath()
目录,它是正确的。
此外,我尝试传递 env
和 cwd
参数,但没有成功。
child_process.exec(cliCmd+' --name "App Name" "http://appname.tld" --platform darwin --arch x64 --electron-version "0.36.6"',
{
env: {"ATOM_SHELL_INTERNAL_RUN_AS_NODE":"1"},
cwd: app.getAppPath()
},
function (error, stdout, stderr) {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
我做错了什么?我也尝试了 child_process.spawn()
,但还是没有成功。
我需要做什么才能在没有安装 nodejs 的机器上从我的应用程序调用打包的 node_module/cli?
我在 process
对象中找到了 execPath
现在我可以在没有全局安装 nodejs 的机器上执行 nodejs 命令。它使用的是 Electron 的内置版本。
child_process.exec(process.execPath+' '+cliCmd+' --name "App Name" "http://appname.tld" --platform darwin --arch x64 --electron-version "0.36.6"',
{
env: {"ATOM_SHELL_INTERNAL_RUN_AS_NODE":"1"},
cwd: app.getAppPath()
},
function (error, stdout, stderr) {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});