Node.js 从Electron打包的应用程序运行Cli命令
我正在使用和包编写Mac OSX GUI,当我在安装了Nodejs(全局)的机器上运行包好的应用程序时,一切正常。Node.js 从Electron打包的应用程序运行Cli命令,node.js,macos,electron,child-process,Node.js,Macos,Electron,Child Process,我正在使用和包编写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'); chi
在未安装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:没有这样的文件或目录”
检查了
app.getAppPath()
dir,结果正确
另外,我尝试传递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\u process.spawn()
,但没有任何运气。在未安装nodejs的机器上,我需要做什么才能从我的应用程序调用打包的node_module/cli?我在
进程
对象中找到execPath
现在我可以在没有全局安装nodejs的机器上执行nodejs命令。它使用的是电子的内置版本
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}`);
});
当我尝试此操作时,我得到了
错误:找不到模块'/Users/abeall/tools/electron/node\u modules/electron/dist/electron.app/Contents/Frameworks/electron Helper.app/Contents/Resources/electron.asar/browser/init.js'