[英]NodeJS Child Process EXEC Command Failed with NVM Permission denied OSX
我試圖在 OSX 上的 Nodejs 的子進程中啟動 nvm 但是這樣做時,我收到以下錯誤:/bin/sh:/Users/miker/.nvm/nvm.sh:權限被拒絕。 子進程以代碼 126 退出(我調用 nvm 的顯式路徑,因為沒有它運行,子進程看不到可執行文件。)
這很明顯是一個權限問題。 但是,我不確定為什么,因為我可以毫無問題地自行啟動命令。 只有在子進程中啟動時才會失敗。 也許,子進程在另一個配置文件的上下文中運行? 如果是這樣,有沒有辦法維護當前的配置文件或上下文?
這是一個示例代碼
let exec = require('child_process').exec;
let child = exec('echo $NVM_DIR && $NVM_DIR/nvm.sh use && npm install', {
cwd: './build/'
});
child.stdout.on('data',
(data) => {
console.log(data);
});
child.stderr.on('data',
(data) => {
//throw errors
console.log(data);
});
child.on('close', (code) => {
console.log('child process exited with code ' + code);
});
我正在使用 NodeJS 7.2.1 和 nvm 0.32.1 如果有人對此問題有解決方案,請告訴我。
~/.nvm/nvm.sh
不是可執行腳本,它是“源”的(不是在單獨的shell中運行,而是在當前shell上下文中加載和執行)。
嘗試將其視為可執行文件運行會導致權限錯誤,因為它沒有可執行文件權限。
我不知道它是否會起作用,但是請嘗試以下方法:
echo $NVM_DIR && source $NVM_DIR/nvm.sh && nvm use VERSION && npm install
您可能必須為child_process.exec()
顯式設置shell
選項,以確保命令行在“完整” shell(例如/bin/bash
)中運行。
我遇到了同樣的問題,但這與代碼無關,而是與我使用的 IDE 終端有關。
解決方案是在IDE設置中更改目錄,更改時解決了。
就我而言,我使用的是 Jetbrains Phpstorm。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.