簡體   English   中英

NodeJS 子進程 EXEC 命令失敗,NVM 權限被拒絕 OSX

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM