2016-10-11 87 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