我正在编写一个带有Electron和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需要做什么?
答案 0 :(得分:2)
我在execPath
对象中找到了process
现在我可以在没有全局安装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}`);
});