我已经提到我的应用程序在运行时使用不同版本的NodeJS sudo.
$ node -v
v0.10.23
$ sudo node -v
v0.11.8-pre
Run Code Online (Sandbox Code Playgroud)
这个v0.11.8-pre给我带来了一些问题,所以我绝对不想使用它,但我不能为root更改它.
$ sudo nvm use v0.10.23
sudo: nvm: command not found
Run Code Online (Sandbox Code Playgroud)
我试图从root用户安装nvm,但是错误"已经安装了NVM",但在运行时仍未找到nvm sudo.我的问题是什么?
Ven*_*van 188
下面的命令列表(来源:digitalocean)似乎解决了这个问题
n=$(which node); \
n=${n%/bin/node}; \
chmod -R 755 $n/bin/*; \
sudo cp -r $n/{bin,lib,share} /usr/local
Run Code Online (Sandbox Code Playgroud)
上面的命令有点复杂,但它所做的就是将你通过nvm激活的任何版本的节点复制到/usr/local/目录中(用户安装的全局文件应该存在于Linux VPS上)并设置权限以便所有用户都可以访问它们.
希望这可以帮助!
Sim*_*leJ 109
我的解决办法是创建的版本的符号链接node和npm我使用到我/usr/local/bin:
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
Run Code Online (Sandbox Code Playgroud)
这使得npm与node提供给所有用户.
CFr*_*rei 13
你的问题是,nvm你使用时不在路径中sudo.
所以输入
$ which nvm
Run Code Online (Sandbox Code Playgroud)
结果就像是
/home/abc/mynvm/nvm
Run Code Online (Sandbox Code Playgroud)
现在再试一次sudo:
sudo /home/abc/mynvm/nvm use v0.10.23
Run Code Online (Sandbox Code Playgroud)
我假设您遇到root用户找不到0.10.13版本的问题,但让我们看看下一条错误消息......
wis*_*cky 10
根本原因是因为nvm它不是一个真正的程序。这是一个bash函数,已加载到用户的.profile,.bashrc或...中,因此sudo不会像大多数其他程序一样自动从$ PATH中拾取它。
备用节点版本管理器是n:https : //github.com/tj/n。这是一个真正的程序,所以sudo将它捡起来通过没有任何黑客的$ PATH(只要sudo有/usr/local/bin在其$ PATH)。
sudo npm install -g n # install 'n' globally
which n # should be /usr/local/bin/n
sudo n lts # need sudo to switch node versions
node --version # v6.10.0
sudo node --version # v6.10.0
Run Code Online (Sandbox Code Playgroud)
我也有你的问题.最后我解决了这个问题.这是我的解决方案:
apt-get purge nodejs.重新启动终端后,您可以运行该命令sudo nvm ls.
通过扩展 @SimpleJ 解决方案,我创建了一个有用的 bash 脚本,可用于将所有二进制文件从实际的 nvm bin 目录链接到/usr/local/bin:
#!/bin/bash
. ~/.nvm/nvm.sh
DIR=$NVM_DIR/versions/node/$(nvm version)/bin/*
DEST=/usr/local/bin
for filename in $DIR; do
filename=$(basename $filename)
DEST_FILE=$DEST/$filename
echo "Copying $filename to $DEST_FILE"
sudo ln -sf "$NVM_DIR/versions/node/$(nvm version)/bin/$filename" "$DEST_FILE"
done
Run Code Online (Sandbox Code Playgroud)
我在我的机器上也尝试过同样的方法,但我的nvm反应略有不同:
$ sudo node --version
sudo: node: command not found
Run Code Online (Sandbox Code Playgroud)
我的猜测是您已经在 nvm 之外安装了节点 0.11。(通过包管理器甚至从源代码)
因此,通过 sudo 运行节点将改为选择此独立节点。
这是有道理的还是我错了?
$ sudo bash -ic "nvm use stable; npm -v"
Now using node v6.3.1 (npm v3.10.3)
3.10.3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53526 次 |
| 最近记录: |