2016-10-11 91 views
0

我正在编写一个带有ElectronNativefier软件包的Mac OSX GUI,当我在安装了Nodejs的机器上运行打包的应用程序(全局)时,一切正常。
在没有安装Nodejs的机器上,找不到命令。从电子打包的应用程序运行Cli命令

我使用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()目录,它是正确的。

此外,我试图通过envcwd参数,但没有任何成功。

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?

回答

2

我发现execPathprocess对象 内,现在我可以在机器上执行的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}`); 
}); 
+0

当我尝试这样做我得到了'错误:无法找到模块“/Users/abeall/tools/electron/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Resources/electron.asar /浏览器/ init.js'' – Aaron