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
为brew版本:
#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
答案 0 :(得分:1039)
试试nvm alias default
。例如:
$ nvm alias default 0.12.7
这将在shell中设置默认节点版本。然后通过关闭shell窗口,打开一个新窗口,验证更改是否仍然存在,然后:
node --version
答案 1 :(得分:73)
别名为node
本身,以避免更新默认别名以及稍后的节点版本更新。
nvm alias default node
答案 2 :(得分:35)
安装最新的稳定版本:
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)
答案 3 :(得分:22)
nvm通过更改PATH变量来完成它的工作,因此您需要确保在获取nvm.sh脚本之后不会以某种方式将PATH更改为其他内容。
在我的情况下,在.bashrc中调用了nvm.sh,但随后在.bash_profile中更新了PATH变量,导致我的会话在nvm节点之前找到了系统节点。
答案 4 :(得分:18)
就我而言,另一个程序已将PATH
更改添加到.bashrc
如果其他程序在 nvm初始化之后更改了PATH
,那么nvm的PATH
更改将被遗忘,我们将获取{{1}上的系统节点(或没有节点)。
解决方法是将nvm设置移至PATH
的底部
.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"
(这是在CentOS上使用bash 4.2.46。在我看来,这似乎是bash中的一个错误,但我可能会弄错。)
答案 5 :(得分:8)
评价最高的解决方案对我来说似乎不起作用。我的解决方案如下:
brew uninstall nvm
brew install nvm
在终端中,按照步骤操作 下面(这些也是在通过自制软件安装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安装中列出的内容中获取)
答案 6 :(得分:6)
如果您尝试了所有方法后仍然不走运,可以尝试一下:_
1->卸载NVM
rm -rf ~/.nvm
2->通过遵循this
删除npm依赖项3-> Install 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
的节点,这将是默认的节点版本,或者您可以安装任何版本的节点
答案 7 :(得分:4)
这个问题已经提到了OSX,但它发生在我的Linux操作系统中。
我尝试使用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
答案 8 :(得分:2)
在安装任何版本
后运行此命令n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
此命令将通过nvm激活的任何版本的节点复制到/ usr / local /目录并设置权限,以便所有用户都可以访问它们。
答案 9 :(得分:2)
我在这里找到了一条新路。使用n
Interactively Manage Your Node.js 会有所帮助。
答案 10 :(得分:2)
例如,nvm install 10.14
将nvm use
用于当前Shell会话的该版本,但不总是将其设置为以后会话的默认版本。您在新的Shell会话中获得的节点版本由nvm alias default
确定。令人困惑的是,nvm install
仅会设置默认别名(如果尚未设置)。要获得预期的行为,请执行以下操作:
nvm alias default ''; nvm install 10.14
这将确保下载该版本,并将其用于当前会话 ,并将其设置为以后会话的默认版本。
答案 11 :(得分:1)
在VS Code编辑器中使用集成终端时,我遇到了同样的问题。使用nvm更改节点版本后重新启动VS Code对我来说解决了这个问题。
答案 12 :(得分:1)
1)安装:
nvm use 8.10.0
2)每个终端只能使用一次
nvm alias default 8.10.0
3)设置所有终端的默认设置
sqlplus Username/Password@SSD << EOF
set colsep ,
set pagesize 0
set trimspool on
set linesize 32768
set echo off
spool $TABLE.csv;
SELECT * FROM $TABLE;
spool off;
EXIT;
EOF
您可能需要使用root权限才能执行这些操作。
别忘了检查nvm documentation以获得更多信息。
答案 13 :(得分:0)
如果您还有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
答案 14 :(得分:0)
在与这个问题长期冲突之后,我找到了解决方法。 这是该问题的分步解决方案:
打开终端并安装命令行开发人员工具:
xcode-select --install
按Enter
安装最新版本的NVM:
cd ~/
按Enter
git clone https://github.com/creationix/nvm.git .nvm
如果您之前已经创建过.nvm文件夹,则会看到下一条错误消息:
fatal: destination path '.nvm' already exists and is not an empty directory.
否则,您将看到克隆过程正在运行,直到完成为止。
查看最新的NVM版本:
cd ~/.nvm
按Enter
git checkout v0.34.0
您将收到类似的回复:
HEAD is now at 3d9c31d v0.34.0
在不同的系统上版本可能会有所不同。
ls
按Enter
. nvm.sh
按Enter
nvm list
按Enter
您会看到计算机上安装了不同的节点版本,可能会有一些错误,请不要引起他们的注意。
nvm ls-remote | tail -n9
按Enter
nvm list
使用vim打开bash:
vim ~/.bash_profile
在vim编辑器中按: i
以输入 INSERT mode
并开始新的一行。如果编辑时有任何错误,请按 ESC
键,然后按 :q!
退出而不保存。
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
完成文件编辑后,按 ESC
键(您将看到INSERT模式消失)。
:wq
保存文件。按Enter
nvm ls-remote | tail -n9
按Enter键并安装显示的最新nvm版本:
nvm install 12.6.0
该过程完成后,您会看到: Now using node v12.6.0 (npm v6.9.0)
您可以按以下命令检查安装是否成功:
node -v
或 npm -v
,它应该显示系统上安装的nvm和npm的版本。
基于: How to Install Latest Node Version Manager NVM and Install Node and NPM in macOS Mac OS X
答案 15 :(得分:0)
volumeMounts:
- name: storage
mountPath: /data/elk
- name: config-volume
mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
subPath: elasticsearch.yml
volumes:
- name: config-volume
configMap:
name: elasticsearch-config
- name: storage
<add-whatever-volume-you-are-using-for-data>
使用上述命令时,仅更新节点版本,而$ nvm alias default {NODE_VERSION}
仍使用旧版本。
这是更新npm
和node
的另一种解决方案,在我的情况下,我想使用节点npm
,并且使用了以下命令。
8.9.4
该命令返回输出。
现在使用节点v8.9.4(npm v5.6.0)
答案 16 :(得分:0)
我正在使用ZSH,所以我不得不按与NVM有关的行的顺序修改~/.zshrc
:
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
答案 17 :(得分:0)
在 Ubuntu 上,如果您运行的是非交互式 shell,例如从 cronjob、init 或 upstart 脚本运行,则存在潜在问题。
Ubuntu 的默认 .bashrc
在顶部有这个保护,如果 shell 是非交互式的,它会提前退出:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
因此,为了为非交互式脚本加载 NVM,您可以编辑 ~/.bashrc
并将 NVM 的 init 移动到文件顶部,就在守卫上方。
更安全的是复制 NVM init 使其出现两次。当其他行在 NVM 之后修改 PATH
时,这将解决其他答案中提到的问题。 NVM 似乎并不介意运行两次,尽管它确实会稍微减慢 shell 启动速度。
答案 18 :(得分:0)
在来自 github 的 nvm 自动加载脚本中,我不得不修改
local node_version="$(nvm version)"
到 local node_version="$(node -v)"
我的系统在我的路径中本地安装了 nvm,所以 nvm version
一直说 system 无论如何
答案 19 :(得分:0)
$ brew install nvm
$ source $(brew --prefix nvm)/nvm.sh
~/.zshrc
文件中,同样由 nvm official GitHub page 指示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
答案 20 :(得分:-2)
如果您在 nvm 之前安装了节点,请检查〜/ .bash_profile 中的内容,使其不具备以下内容:
export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH
如果你有,请评论/删除它, nvm 应该开始处理默认节点版本。