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
不是可执行脚本,它的意思是 "sourced"(不是 运行 在单独的 shell 中,而是在当前 shell上下文)。
尝试运行它就像它是可执行的一样会导致权限错误,因为它没有可执行权限。
我不知道它是否有效,但试试这个:
echo $NVM_DIR && source $NVM_DIR/nvm.sh && nvm use VERSION && npm install
您可能需要为 child_process.exec()
显式设置 shell
选项,以确保命令行在 "full" shell 中为 运行(喜欢 /bin/bash
).
我遇到了同样的问题,但它与代码无关,而是与我使用的 IDE 终端有关。
解决办法是在IDE设置里改目录,改的时候解决了
就我而言,我使用的是 Jetbrains Phpstorm。
我正在尝试在 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
不是可执行脚本,它的意思是 "sourced"(不是 运行 在单独的 shell 中,而是在当前 shell上下文)。
尝试运行它就像它是可执行的一样会导致权限错误,因为它没有可执行权限。
我不知道它是否有效,但试试这个:
echo $NVM_DIR && source $NVM_DIR/nvm.sh && nvm use VERSION && npm install
您可能需要为 child_process.exec()
显式设置 shell
选项,以确保命令行在 "full" shell 中为 运行(喜欢 /bin/bash
).
我遇到了同样的问题,但它与代码无关,而是与我使用的 IDE 终端有关。
解决办法是在IDE设置里改目录,改的时候解决了
就我而言,我使用的是 Jetbrains Phpstorm。