当在OS X中使用一个新的终端会话时,nvm会忘记节点版本并默认为零:

$nvm ls:

         .nvm
     v0.11.12
     v0.11.13

我必须在每个会话中一直按nvm use v.0.11.13:

         .nvm
     v0.11.12
->   v0.11.13

我已经尝试了brew安装和官方安装脚本。

我的.profile为酿造版本:

#nvm
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

对于install.sh脚本:

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash

#nvm
export NVM_DIR="/Users/farhad/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

你知道我哪里做错了吗?


当前回答

我使用NVM与zsh bash 按此链接删除NVM 安装NVM 在安装和重启终端后,我运行了$ source $(brew——prefix nvm)/nvm.sh 将线波纹管置于~/中。zshrc文件,也由nvm官方GitHub页面指示

export NVM_DIR="$HOME/.nvm"
  [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"  # This loads nvm
  [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

# place this after nvm initialization!
autoload -U add-zsh-hook

load-nvmrc() {
  local node_version="$(nvm version)"
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$node_version" ]; then
      nvm use
    fi
  elif [ "$node_version" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

其他回答

参考:导致这个问题的原因是NPM试图访问/写入的文件夹不属于执行命令的用户

运行下面所述的命令,您应该可以运行了!

sudo chown -R ' whoami ' ~/.npm sudo chown -R ' whoami ' /usr/local/lib/node_modules

试试运行npm install -g…或者NPM uninstall -g…如果没有sudo,它应该没有错误地运行。

在我这端,我必须更改别名STABLE和DEFAULT

nvm alias stable {node_version}

nvm alias default {node_version}

安装最新的稳定版本:

nvm install stable

设置default为稳定版本(而不是指定版本):

nvm alias default stable

列出已安装版本:

nvm list

从v6.2.0开始,它看起来像这样:

$ nvm list
         v4.4.2
->       v6.2.0
default -> stable (-> v6.2.0)
node -> stable (-> v6.2.0) (default)
stable -> 6.2 (-> v6.2.0) (default)
iojs -> N/A (default)
$ nvm alias default {NODE_VERSION}

当我们使用上面的命令时,只更新节点版本,但NPM仍然使用旧版本。

这里是更新节点和npm的另一个解决方案,在我的情况下,我想使用节点8.9.4,我已经使用了下面的命令。

$ nvm use default 8.9.4

该命令返回输出。

现在使用节点v8.9.4 (npm v5.6.0)

如果你也有SDKMAN…

不知何故,SDKMAN与我的NVM相冲突。如果你对此束手无策,仍然想不出来,我只是通过忽略SDKMAN中的“this MUST BE at the end OF the FILE…”并将NVM行放在它之后来修复它。

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/myname/.sdkman"
[[ -s "/Users/myname/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/myname/.sdkman/bin/sdkman-init.sh"

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion