nvm(翻译)

1,891 阅读6分钟

原文:github.com/nvm-sh/nvm

node版本管理器

关于

nvm是一个node版本管理器,设计为按用户安装,并按shell调用。nvm可以在任何与POSIX兼容的shell(sh、dash、ksh、zsh、bash)上工作,特别是在以下平台上:unix、macOS和windows WSL。

安装和更新

安装和更新脚本

要安装或更新nvm,您应该运行安装脚本。为此,您可以手动下载并运行脚本,或者使用以下cURL或Wget命令:

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

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

运行上述任一命令将下载并运行脚本。脚本将nvm存储库克隆到~/.nvm,并尝试将下面代码段中的源代码行添加到正确的配置文件(~/.bash_profile、~/.zshrc、~/.profile或~/.bashrc)。

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

附加说明

如果环境变量$XDG_CONFIG_HOME存在,它将把nvm文件放在那里。

您可以在上面的脚本末尾添加--no-use(。。。nvm.sh --no-use)推迟使用nvm,直到您手动使用它。

您可以使用NVM_source、NVM_DIR、profile和NODE_ version变量自定义安装源、目录、配置文件和版本。例句:curl ... 。|NVM_DIR=“路径/到/NVM”。确保NVM_DIR不包含尾随斜杠。

安装程序可以使用git、curl或wget来下载nvm(以可用的为准)。

Linux上的故障排除

在Linux上,运行安装脚本后,如果在键入command-v nvm后得到nvm:command not found或没有看到来自终端的反馈,只需关闭当前终端,打开一个新终端,然后再次尝试验证。

macOS故障排除

从OSX10.9开始,Xcode命令行工具已经预置了/usr/bin/git,这意味着我们无法正确检测是否安装了git。在运行安装脚本之前,您需要手动安装Xcode命令行工具,否则,它将失败。(见1782)

如果在运行安装脚本后得到nvm:command not found,则可能是以下原因之一:

  • 从MacOS10.15开始,默认shell为zsh,nvm将查找.zshrc进行更新,默认情况下不安装任何程序。使用touch~/.zshrc创建一个,然后再次运行安装脚本。

  • 如果您使用bash(以前的默认shell),请运行touch~/.bash_profile来创建所需的概要文件(如果它不存在)。

  • 您可能需要重新启动终端实例或运行。~/.nvm/nvm.sh。重新启动终端/打开新选项卡/窗口或运行源命令将加载命令和新配置。

如果上述方法不能解决问题,您可以尝试以下操作:

  • 如果您使用bash,可能是您的.bash_profile(或~/.profile)没有正确获取~/.bashrc。您可以通过添加资源 ~/<your_profile_file>来解决此问题,或者按照下面的步骤操作。
  • 尝试将install部分中的代码片段添加到您常用的概要文件(~/.bash_profile、~/.zshrc、~/.profile或~/.bashrc)中,该代码段将找到正确的nvm目录并加载nvm。
  • 有关此问题和可能的解决方法的详细信息,请参阅此处

Ansible

您可以使用任务:

- name: nvm
  shell: >
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
  args:
    creates: "{{ ansible_env.HOME }}/.nvm/nvm.sh"

验证安装

要验证是否已安装nvm,请执行以下操作:

command -v nvm

如果安装成功,应该输出nvm。请注意哪个nvm不能工作,因为nvm是一个源shell函数,而不是一个可执行的二进制文件。

重要注意事项

如果您运行的系统没有预打包的二进制文件,这意味着您要安装nodejs或io.js公司从源代码中,您需要确保系统具有C++编译器。对于osx,Xcode可以工作;对于基于Debian/Ubuntu的GNU/Linux,build-essential和libssl-dev包可以工作。

注意:nvm不支持Windows(请参见#284),但可以在WSL(Linux的Windows子系统)中工作,具体取决于WSL的版本。对于Windows,有两种选择,我们既不支持也不开发:

注:nvm也不支持Fish(见303)。存在我们既不支持也不开发的备选方案:

  • bass允许您在fishshell中使用为Bash编写的实用程序

  • fast-nvm-fish只适用于版本号(而不是别名),但不会显著减慢shell的启动速度

  • Fish的plugin-nvm插件,这使nvm和它的完整性在fish shell可用

*fnm - fisherman-based version manager for fish

  • fish-nvm - Wrapper around nvm for fish, delays sourcing nvm until it's actually used.

注意:FreeBSD仍然存在一些问题,因为FreeBSD没有官方的预构建二进制文件,从源代码构建可能需要补丁;请参阅问题通知单:

注意:在OSX上,如果您没有安装Xcode并且不想下载~4.3GB文件,可以安装命令行工具。您可以查看这篇博客文章,了解如何做到:

注意:在OS X上,如果您已经/曾经安装过“系统”node并希望全局安装模块,请记住:

  • 当使用nvm时,您不需要sudo npm -g全局安装模块,所以不要执行sudo npm install -g grunt,而是使用npm install -g grunt
  • 如果您有~/.npmrc文件,请确保它不包含任何前缀设置(这与nvm不兼容)
  • 你可以(但不应该?)保留以前的“系统”node安装,但nvm仅对您的用户帐户(用于安装nvm的帐户)可用。这可能会造成版本不匹配,用户可能会使用本地/usr/local/lib/node_modules/,而你会使用~/.nvm/versions/node/vX.X.X/lib/node_modules/

不支持自制程序安装。如果您对自制安装的nvm有问题,请brew卸载它,并在提交问题之前按照以下说明进行安装。

注意:如果你正在使用zsh,你可以很容易地将nvm安装为zsh插件。安装zsh nvm并运行nvm upgrade进行升级。

注意:1.7版之前的Git版本可能会面临通过https协议从GitHub克隆nvm源的问题,而且1.6版之前的Git也有不同的行为,而且v1.17.10之前的Git不能克隆标签,所以最低要求的Git版本是v1.7.10。如果您对我们在这里提到的问题感兴趣,请参阅GitHub的HTTPS克隆错误文章

Git安装

如果已安装git(需要git v1.7.10+):

  • 在用户配置文件的根目录中克隆此存储库
  • cd~/.nvm并使用git checkout v0.35.3查看最新版本
  • 激活nvm,从你的shell。nvm.sh

现在将这些行添加到~/.bashrc、~/.profile或~/.zshrc文件中,以便在登录时自动获取源代码:(您可能需要添加到以上文件中的多个)

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

手动安装

对于完全手动安装,请执行以下行,首先将nvm存储库克隆到$HOME/.nvm中,然后加载nvm:

export NVM_DIR="$HOME/.nvm" && (
  git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR"
  cd "$NVM_DIR"
  git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"

现在将这些行添加到~/.bashrc、~/.profile或~/.zshrc文件中,以便在登录时自动获取源代码:(您可能需要添加到以上文件中的多个)

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

手动升级

对于使用git进行手动升级(需要git v1.7.10+):

  • 切换到$NVM_DIR

  • 删除最新的更改

  • 查看最新版本

  • 激活新版本

      (
        cd "$NVM_DIR"
        git fetch --tags origin
        git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
      ) && \. "$NVM_DIR/nvm.sh"
    

使用

要下载、编译和安装最新版本的node,请执行以下操作:

nvm install node # “node”是最新版本的别名

要安装特定版本的node:

nvm install 6.14.4 # or 10.10.0, 8.9.1, etc

安装的第一个版本将成为默认版本。新的shell将从默认版本的node开始(例如,nvm alias default)。

您可以使用ls-remote列出可用版本:

nvm ls-remote

然后在任何新的shell中,只需使用已安装的版本:

nvm use node

或者你可以直接运行它:

nvm run node --version

或者,您可以在具有所需版本node的子shell中运行任意命令:

nvm exec 4.2 node --version

您还可以获取可执行文件的安装路径:

nvm which 5.0

代替“0.10”、“5.0”或“4.2.1”之类的版本指针,您可以在nvm install、nvm use、nvm run、nvm exec、nvm which等中使用以下特殊的默认别名:

  • node: 这将安装node的最新版本
  • iojs:这将安装最新版本的io.js
  • stable: 此别名已弃用,仅真正适用于节点v0.12及更早版本。当前,这是node的别名。
  • unstable:这个别名指向node v0.11,这是最后一个“不稳定”的节点版本,自1.0之后,所有节点版本都是稳定的。(在SemVer中,版本传达的是破坏,而不是稳定性)。

长期支持

Node有一个长期支持(LTS)的计划,例如,对于最新的LTS,可以引用别名和.nvmrc文件中的LTS版本,对于LTS版本,可以引用LTS/argon,例如,从“argon”行引用LTS/argon。此外,以下命令支持LTS参数:

* nvm install --lts / nvm install --lts=argon / nvm install 'lts/*' / nvm install lts/argon
* nvm uninstall --lts / nvm uninstall --lts=argon / nvm uninstall 'lts/*' / nvm uninstall lts/argon
* nvm use --lts / nvm use --lts=argon / nvm use 'lts/*' / nvm use lts/argon
* nvm exec --lts / nvm exec --lts=argon / nvm exec 'lts/*' / nvm exec lts/argon
* nvm run --lts / nvm run --lts=argon / nvm run 'lts/*' / nvm run lts/argon
* nvm ls-remote --lts / nvm ls-remote --lts=argon nvm ls-remote 'lts/*' / * nvm ls-remote lts/argon
* nvm version-remote --lts / nvm version-remote --lts=argon / nvm version-remote 'lts/*' / nvm version-remote lts/argon

任何时候你的本地nvm副本连接到https://nodejs.org,它将为所有可用的LTS行重新创建适当的本地别名。这些别名(存储在$NVM_DIR/alias/lts下)由NVM管理,您不应修改、删除或创建这些文件-希望您的更改被撤消,并希望对这些文件的干预会导致可能不受支持的错误。

安装时迁移全局包

如果要安装的新版本node.js并从以前的版本迁移npm包:

nvm install node --reinstall-packages-from=node

这将首先使用“nvm version node”来标识从中迁移包的当前版本。然后它解析要从远程服务器安装的新版本并安装它。最后,它运行“nvm reinstall packages”将npm包从以前的Node版本重新安装到新版本。

您还可以从特定版本的Node安装和迁移npm包,如下所示:

nvm install 6 --reinstall-packages-from=5
nvm install v4.2 --reinstall-packages-from=iojs

请注意,显式地重新安装包不会更新npm版本—这是为了确保npm不会意外升级到新node版本的损坏版本。

要同时更新npm,请添加--latest npm标志,如下所示:

nvm install lts/* --reinstall-packages-from=default --latest-npm

或者,您可以随时运行以下命令以获取当前节点版本上支持的最新npm版本:

nvm install-latest-npm

如果你已经得到一个错误的影响“npm does not support Node.js“,您需要(1)恢复到以前的节点版本(nvm ls & nvm use ,(2)删除新创建的node版本(nnvm uninstall ),然后(3)使用--latest npm标志重新运行nvm安装。

安装时来自文件的默认全局包

如果您在每次安装新版本时都有一个要安装的默认软件包列表,我们也支持它——只需在$NVM_DIR/default packages文件中添加包名,每行一个。您可以在命令行中添加npm将接受的任何内容作为包参数。

# $NVM_DIR/default-packages

rimraf
object-inspect@1.0.2
stevemao/left-pad

io.js

如果要安装io.js

nvm install iojs

如果要安装的新版本io.js并从以前的版本迁移npm包:

nvm install iojs --reinstall-packages-from=iojs

在node中迁移npm包时提到的相同指导原则适用于io.js.

node的系统版本

如果要使用系统安装的node版本,可以使用特殊的默认别名“system”:

nvm use system
nvm run system --version

列出版本

如果要查看安装了哪些版本:

nvm ls

如果要查看可安装的版本: nvm ls-remote

控制彩色输出

nvm ls、nvm ls remote和nvm alias通常会生成彩色输出。可以使用--no colors选项(或通过设置环境变量TERM=dumb)禁用颜色:

nvm ls --no-colors
TERM=dumb nvm ls

要恢复路径,可以停用它:

nvm deactivate

要设置要在任何新shell中使用的默认node版本,请使用别名“default”:

nvm alias default node

要使用节点二进制文件的镜像,请设置$NVM_NODEJS_ORG_mirror:

export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist
nvm install node

NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist nvm install 4.2

使用io.js二进制文件,设置$NVM_IOJS_ORG_MIRROR:

export NVM_IOJS_ORG_MIRROR=https://iojs.org/dist
nvm install iojs-v1.0.3

NVM_IOJS_ORG_MIRROR=https://iojs.org/dist nvm install iojs-v1.0.3

默认情况下,nvm的使用不会创建“当前”符号链接。将$NVM_SYMLINK_CURRENT设置为“true”以启用此行为,这有时对ide很有用。请注意,在启用此环境变量的多个shell选项卡中使用nvm可能会导致争用条件。

.nvmrc

您可以在项目根目录(或任何父目录)中创建一个包含节点版本号(或nvm理解的任何其他字符串;有关详细信息,请参阅nvm--help)的.nvmrc文件。然后,nvm use、nvm install、nvm exec、nvm run和nvm,如果命令行上没有提供版本,则nvm将使用.nvmrc文件中指定的版本。

例如,要使nvm默认为当前目录的最新5.9版本、最新LTS版本或最新node版本:

$ echo "5.9" > .nvmrc

$ echo "lts/*" > .nvmrc # to default to the latest LTS version

$ echo "node" > .nvmrc # to default to the latest version

那么当您运行nvm时:

$ nvm use
Found '/path/to/project/.nvmrc' with version <5.9>
Now using node v5.9.1 (npm v3.7.3)

nvm使用等。将从当前目录向上遍历目录结构,以查找.nvmrc文件。换句话说,运行nvm use等。在带有.nvmrc的目录的任何子目录中,都会导致使用.nvmrc。

nvmrc文件的内容必须是(如nvm--help所述)后跟一个新行。不允许使用尾随空格,并且尾部换行符是必需的。

更深层次的Shell集成

nvm。nvm开发团队不支持avn。请向avn团队报告问题

如果您喜欢更轻的解决方案,下面的配方是由nvm用户提供的。它们不受nvm开发团队的支持。不过,我们正在接受更多示例的请求。

bash

自动调用nvm使用

在$HOME/.bashrc的末尾添加以下内容:

find-up () {
    path=$(pwd)
    while [[ "$path" != "" && ! -e "$path/$1" ]]; do
        path=${path%/*}
    done
    echo "$path"
}

cdnvm(){
    cd "$@";
    nvm_path=$(find-up .nvmrc | tr -d '\n')

    # If there are no .nvmrc file, use the default nvm version
    if [[ ! $nvm_path = *[^[:space:]]* ]]; then

        declare default_version;
        default_version=$(nvm version default);

        # If there is no default version, set it to `node`
        # This will use the latest version on your machine
        if [[ $default_version == "N/A" ]]; then
            nvm alias default node;
            default_version=$(nvm version default);
        fi

        # If the current version is not the default version, set it to use the default version
        if [[ $(nvm current) != "$default_version" ]]; then
            nvm use default;
        fi

        elif [[ -s $nvm_path/.nvmrc && -r $nvm_path/.nvmrc ]]; then
        declare nvm_version
        nvm_version=$(<"$nvm_path"/.nvmrc)

        declare locally_resolved_nvm_version
        # `nvm ls` will check all locally-available versions
        # If there are multiple matching versions, take the latest one
        # Remove the `->` and `*` characters and spaces
        # `locally_resolved_nvm_version` will be `N/A` if no local versions are found
        locally_resolved_nvm_version=$(nvm ls --no-colors "$nvm_version" | tail -1 | tr -d '\->*' | tr -d '[:space:]')

        # If it is not already installed, install it
        # `nvm install` will implicitly use the newly-installed version
        if [[ "$locally_resolved_nvm_version" == "N/A" ]]; then
            nvm install "$nvm_version";
        elif [[ $(nvm current) != "$locally_resolved_nvm_version" ]]; then
            nvm use "$nvm_version";
        fi
    fi
}
alias cd='cdnvm'

此别名将从当前目录中“向上”搜索以检测.nvmrc文件。如果找到它,它将切换到该版本;否则,它将使用默认版本。

zsh

在带有.nvmrc文件的目录中自动调用nvm use

将它放入您的$HOME/.zshrc中,以便在您输入包含.nvmrc文件的目录时自动调用nvm use,该目录包含一个字符串,告诉nvm要使用哪个node:

# 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

fish

在带有.nvmrc文件的目录中自动调用nvm use

这需要安装 bass。

# ~/.config/fish/functions/nvm.fish
function nvm
  bass source ~/.nvm/nvm.sh --no-use ';' nvm $argv
end

# ~/.config/fish/functions/nvm_find_nvmrc.fish
function nvm_find_nvmrc
  bass source ~/.nvm/nvm.sh --no-use ';' nvm_find_nvmrc
end

# ~/.config/fish/functions/load_nvm.fish
function load_nvm --on-variable="PWD"
  set -l default_node_version (nvm version default)
  set -l node_version (nvm version)
  set -l nvmrc_path (nvm_find_nvmrc)
  if test -n "$nvmrc_path"
    set -l nvmrc_node_version (nvm version (cat $nvmrc_path))
    if test "$nvmrc_node_version" = "N/A"
      nvm install (cat $nvmrc_path)
    else if test nvmrc_node_version != node_version
      nvm use $nvmrc_node_version
    end
  else if test "$node_version" != "$default_node_version"
    echo "Reverting to default Node version"
    nvm use default
  end
end

# ~/.config/fish/config.fish
# You must call it on initialization or listening to directory switching won't work
load_nvm

许可证

nvm是根据麻省理工学院的许可证发布的。

版权所有(C)2010 Tim Caswell和Jordan Harband

特此免费授予获得本软件和相关文档文件(以下简称“软件”)副本的任何人无限制地使用本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向其提供软件的人提供软件,但须符合以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,无任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而引起的、与之相关的任何索赔、损害赔偿或其他责任负责,无论是合同诉讼、侵权诉讼还是其他诉讼。

运行测试

测试是用Urchin写的。安装Urchin 和其他依赖项,如:

npm install

有慢测试和快测试。慢测试会执行诸如install node和检查是否使用了正确的版本。fast测试会伪造这个来测试别名和卸载。在nvm git存储库的根目录下,运行如下快速测试:

npm run test/fast

像这样运行慢速测试:

npm run test/slow

按如下方式运行所有测试:

npm test

注意:避免在测试运行时运行nvm。

环境变量

nvm公开以下环境变量:

  • NVM_DIR - nvm的安装目录。
  • NVM_BIN - 其中安装了node的活动版本的node、npm和global包。
  • NVM_INC - node的文件目录(用于构建C/C++节点的插件)。
  • NVM_CD_FLAGS - 用于保持与zsh的兼容性。
  • NVM_RC_VERSION - .nvmrc文件中的版本(如果正在使用)。

另外,在更改版本时,nvm会修改路径,以及MANPATH和NODE_PATH(如果存在)。

Bash Completion

要激活,您需要源bash_completion:

[[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion

将上面的源代码行放在您的配置文件(.bashrc,.bash\u profile)中的nvm源代码行的正下方。

使用

nvm:

$ nvm

alias               deactivate          install             ls                  run                 unload
clear-cache         exec                list                ls-remote           unalias             use
current             help                list-remote         reinstall-packages  uninstall           version

nvm alias:

$ nvm alias

default

$ nvm alias my_alias

v0.6.21        v0.8.26       v0.10.28

nvm use:

$ nvm use

my_alias        default        v0.6.21        v0.8.26       v0.10.28

nvm uninstall:

nvm uninstall

my_alias        default        v0.6.21        v0.8.26       v0.10.28

兼容性问题

如果设置了一些非默认设置,nvm将遇到一些问题。(参见#606)已知以下情况会导致问题:

在~/.npmrc中:

prefix='some/path'

环境变量:

$NPM_CONFIG_PREFIX
$PREFIX

shell设置:

set -e

在Alpine Linux上安装nvm

In order to provide the best performance (and other optimisations), nvm will download and install pre-compiled binaries for Node (and npm) when you run nvm install X. The Node project compiles, tests and hosts/provides these pre-compiled binaries which are built for mainstream/traditional Linux distributions (such as Debian, Ubuntu, CentOS, RedHat et al).

Alpine Linux, unlike mainstream/traditional Linux distributions, is based on BusyBox, a very compact (~5MB) Linux distribution. BusyBox (and thus Alpine Linux) uses a different C/C++ stack to most mainstream/traditional Linux distributions - musl. This makes binary programs built for such mainstream/traditional incompatible with Alpine Linux, thus we cannot simply nvm install X on Alpine Linux and expect the downloaded binary to run correctly - you'll likely see "...does not exist" errors if you try that.

There is a -s flag for nvm install which requests nvm download Node source and compile it locally.

If installing nvm on Alpine Linux is still what you want or need to do, you should be able to achieve this by running the following from you Alpine Linux shell:

apk add -U curl bash ca-certificates openssl ncurses coreutils python2 make gcc g++ libgcc linux-headers grep util-linux binutils findutils
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

The Node project has some desire but no concrete plans (due to the overheads of building, testing and support) to offer Alpine-compatible binaries.

As a potential alternative, @mhart (a Node contributor) has some Docker images for Alpine Linux with Node and optionally, npm, pre-installed.

卸载/删除

手动卸载

要手动删除nvm,请执行以下操作:

$ rm -rf "$NVM_DIR"

编辑~/.bashrc(或其他shell资源配置)并删除以下行:

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

Docker For Development Environment

为了便于开发和测试,我们有一个Dockerfile供开发使用,它基于Ubuntu14.04 base image,并配备了nvm开发的必备工具,要构建环境的docker镜像,请运行nvm库根目录下的docker命令:

docker build -t nvm-dev .

这会将您当前的nvm存储库与我们预定义的开发环境打包到一个名为nvm dev的docker映像中,一旦成功构建,请通过docker images验证您的映像:

$ docker images

REPOSITORY         TAG                 IMAGE ID            CREATED             SIZE
nvm-dev            latest              9ca4c57a97d8        7 days ago          650 MB

如果没有错误消息,现在您可以轻松参与:

$ docker run -h nvm-dev -it nvm-dev

nvm@nvm-dev:~/.nvm$

请注意,它将花费大约8分钟来构建图像,并且图像大小大约为650MB,因此它不适合用于生产用途。

有关docker的更多信息和文档,请访问其官方网站:

问题

  • 如果尝试安装节点版本但安装失败,请确保运行nvm cache clear以删除缓存的节点下载,否则可能会出现如下错误:

    • curl:(33)HTTP服务器似乎不支持字节范围。无法继续。

我的sudo node在哪里?查看#43

在node的v0.8.6版本发布之后,nvm尝试从二进制软件包进行安装。但是在某些系统中,由于共享lib的不兼容,官方的二进制包无法工作。在这种情况下,请使用-s选项从源强制安装:

nvm install -s 0.8.6

如果设置默认别名没有在新shell中建立node 版本(即nvm current yields system),请确保在nvm.sh shell配置文件中的源代码行设置了node的PATH(请参见#658

macOS故障排除

nvm node version not found in vim shell

如果您将node version设置为系统node 版本 nvm use 6.2.1 是nvm以外的版本,请打开vim并运行:!node-v如果看到系统版本v0.12.7,您应该会看到v6.2.1。您需要运行:

sudo chmod ugo-x /usr/libexec/path_helper

关于这个问题的更多信息dotphiles/dotzsh.