当在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 alias default。例如:

$ NVM别名默认为0.12.7

这将设置shell中的默认节点版本。然后通过关闭shell窗口,打开一个新的窗口来验证更改是否持续,然后: 节点——版本

其他回答

这个问题已经提到了OSX,但它发生在我的linux操作系统。 我尝试使用nvm alias default <version>,但是对于每个新的终端会话,所使用的节点版本都被忘记了。 这就是我算出来的解。

确保为节点版本设置一个默认别名,将以下代码放在.bashrc中,并将源代码放在.bashrc中。

export NVM_DIR="/home/bonnie/.nvm"
## If the file exists and is not empty
if [ -s "$NVM_DIR/nvm.sh" ]; then
    ## Source it
    source "$NVM_DIR/nvm.sh"
fi
NODE_DEFAULT_VERSION=$(<"$NVM_DIR/alias/default")
export PATH="$NVM_DIR/versions/node/$NODE_DEFAULT_VERSION/bin":$PATH

描述性解决方案link

在VS Code编辑器中使用集成终端时,我也面临着同样的问题。在使用nvm更改节点版本后重新启动VS Code,为我解决了这个问题。

Linux - ubuntu

如何解决这个问题呢

https://i.ibb.co/vQpMrpb/2022-11-19-18-14.jpg

NVM的使用并不意味着要持久—它只是在shell的生命周期内使用。

如果你想在打开新的shell时将nvm alias作为默认节点,你可以使用nvm alias default node,或者你可以创建一个.nvmrc文件,该文件将优先于当前目录中的任何位置,直到/。 https://github.com/nvm-sh/nvm/issues/658

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

nvm alias stable {node_version}

nvm alias default {node_version}

在Ubuntu上,如果你运行一个非交互的shell,比如cronjob, init或者upstart脚本,就会有一个潜在的问题。

Ubuntu默认的.bashrc在顶部有这个保护,如果shell是非交互式的,它会提前退出:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

因此,为了为非交互式脚本加载NVM,可以编辑~/。将NVM的init移到文件的顶部,就在guard的上面。

更安全的方法是复制NVM init,使其出现两次。这将解决其他答案中提到的问题,当其他行在NVM之后修改PATH时。NVM似乎并不介意被运行两次,尽管它确实会降低shell启动速度。