nvm在新的终端会话中保留“忘记”节点

Node.js

LEY逆天

2020-03-16

在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

关于我在做什么错的任何线索吗?

第1768篇《nvm在新的终端会话中保留“忘记”节点》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

16个回答
Sam梅 2020.03.16

同样,如果您nvm之前安装节点请在〜/ .bash_profile中检查以下内容

export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH

如果有,请注释/删除它,并且nvm应该开始处理默认的节点版本。

达蒙梅 2020.03.16

如果您还有SDKMAN ...

不知何故,SDKMAN与我的NVM冲突。如果您不知所措但仍无法解决,我只是通过忽略SDKMAN的“此内容必须位于文件的末尾...”并在其后放置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
JinJin达蒙 2020.03.16

在VS Code编辑器中使用集成终端时,我遇到了同样的问题。使用nvm更改节点版本后重新启动VS Code对我来说解决了这个问题。

Jim猴子 2020.03.16

我使用的是ZSH,因此我不得不按~/.zshrc与NVM有关的顺序进行修改

export PATH="/Users/USERNAME/google-cloud-sdk/bin:$PATH"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.nvm/nvm.sh
小卤蛋卡卡西A 2020.03.16
$ nvm alias default {NODE_VERSION}

当我们使用上述命令时,仅更新节点版本,而npm仍使用旧版本。

这是同时更新node和的另一种解决方案npm,在我的情况下,我想使用node,8.9.4并且使用了以下命令。

$ nvm use default 8.9.4

然后该命令返回输出。

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

Harry小胖 2020.03.16

我在这里找到了新方法。n 交互式使用管理Node.js会有所帮助。

宝儿樱 2020.03.16

在安装任何版本后运行此命令,

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local

该命令将通过nvm激活的任何版本的节点复制到/ usr / local /目录中,并设置权限,以便所有用户都可以访问它们。

猴子 2020.03.16

nvm install 10.14例如,这样做nvm use为当前的Shell会话提供该版本,但不会像您期望的那样始终将其设置为将来会话的默认版本。在新的Shell会话中获得的节点版本由决定nvm alias default令人困惑的是,nvm install只会设置默认别名(如果尚未设置)。要获得预期的行为,请执行以下操作:

nvm alias default ''; nvm install 10.14

这将确保下载该版本,将其用于当前会话并将其设置为以后会话的默认版本。

小胖前端逆天 2020.03.16

如果您尝试了所有一切仍然没有运气,可以尝试一下:_

1->卸载NVM

rm -rf ~/.nvm

2 - >删除NPM依赖性按照

3-> 安装NVM

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

4->设置~/.bash_profile配置

sudo nano ~/.bash_profile

复制并粘贴此

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

5-> CONTROL + X保存更改

6->运行 . ~/.bash_profile

7->现在您应该已经nvm安装在计算机上,要运行nvm install v7.8.0节点,将使用默认节点版本,也可以安装任何版本的节点

番长米亚 2020.03.16

这个问题已经提到过OSX,但是在我的Linux OS中却发生了。我尝试使用,nvm alias default <version>但是对于每个新的终端会话,使用的节点版本都被忘记了。因此,这是我想出的解决方案。

确保为节点版本设置默认别名,将以下代码放入.bashrc和中source .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

描述性解决方案链接

米亚Eva 2020.03.16

就我而言,另一个程序已将PATH更改添加.bashrc

如果PATH nvm初始化之后另一个程序改变了,那么nvm的PATH改变将被遗忘,我们将获得系统节点PATH(或者没有节点)。

解决的办法是将NVM设置移到底部.bashrc

### BAD .bashrc ###

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

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

解:

### GOOD .bashrc ###

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

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

(这是CentOS上的bash 4.2.46。在我看来,这就像bash中的错误,但我可能会误解。)

前端Stafan 2020.03.16

nvm通过更改PATH变量来完成其工作,因此您需要确保在采购nvm.sh脚本后不会以某种方式将PATH更改为其他内容。

以我为例,在.bashrc中调用了nvm.sh,但随后在.bash_profile中更新了PATH变量,这导致我的会话在nvm节点之前找到了系统节点。

Gil猿 2020.03.16

最受好评的解决方案似乎对我不起作用。我的解决方案如下:

  1. 使用Homebrew完全卸载nvm:brew uninstall nvm
  2. 重新安装 brew install nvm
  3. 在终端中,请按照以下步骤操作(通过自制软件安装nvm时也会列出这些步骤):

    mkdir〜/ .nvm cp $(brew --prefix nvm)/ nvm-exec〜/ .nvm / export NVM_DIR =〜/ .nvm source $(brew --prefix nvm)/nvm.sh

上面概述的步骤会将NVM的工作目录添加到$ HOME路径,将nvm-exec复制到NVM的工作目录,并添加到$ HOME / .bashrc,$ HOME / .zshrc或您的Shell的等效配置文件。使用自制软件在NVM安装中列出)

飞云路易 2020.03.16

要安装最新的稳定版本:

nvm install stable

要将默认设置为稳定版本(而不是特定版本):

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)
樱泡芙 2020.03.16

node自身的别名,以避免以后再更新默认别名以及节点版本更新。

nvm alias default node
小哥Harry泡芙 2020.03.16

尝试nvm alias default例如:

$ nvm alias default 0.12.7

这将在您的外壳中设置默认节点版本。然后通过关闭外壳程序窗口,打开一个新窗口来验证更改是否仍然存在,然后: node --version

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android