序
当你管理着多个项目时,有没有遇到以下提示?
1 | Syntax Error: Error: Missing binding D:\works\test-product\node_modules\node-sass\vendor\win32-x64-57\binding.node |
这是在执行程序的时候,本地运行版本与node-sass安装版本不一致导致的。
有这种情况的朋友,大多数应该都有使用上nvm吧?
没错,管理Node版本目前最好的工具就是nvm[^1]。
nvm的安装
官方工具
官网介绍
nvm 是 node.js 的版本管理器,设计为按用户安装,并按 shell 调用。 nvm 适用于任何符合 POSIX 的 shell(sh、dash、ksh、zsh、bash),特别是在这些平台上:unix、macOS 和 windows WSL
如果你符合上述环境,就可以通过下面两步完成安装:
- 直接复制下面的命令到终端运行
1 | $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash |
上面命令会下载并运行脚本,然后将nvm项目下载到~/.nvm
目录下存放。
- 将下面代码编辑至
~/.bash_profile
,~/.zshrc
,~/.profile
, or~/.bashrc
其中一个文件中
1 | export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" |
Window下的选择
如果你想在windows普通环境下管理你的node版本,可以安装nvm-windows[^2]。
下载双击安装就可以了。
nvm的使用
使用的方式有两种:
- 命令直接操作
- 用于项目
命令直接操作
nvm官方版本命令
1 | # 查看所有已发布的node版本 |
nvm-windows版本的命令
1 | # 查看所有已发布的node版本 |
用于项目
像文章开头遇到的情况,项目在用的node版本存在要求时,有什么办法解决呢?
nvm支持读取.nvmrc
文件进行node版本的切换。
这就是答案。
具体这样用:
- 在项目中创建.nvmrc并将当前版本注入其中。
1 | # nvm |
.nvmrc
将作为项目使用哪个Node版本的重要依据,所以记得提交到git历史。
- 项目运行命令前执行切换node版本
比如vue-cli项目下会有这两行,一般用于开发调取的,如:本地运行npm run serve
。
1 | { |
执行时直接切换node版本,只需要增加两行配置[^3]:
1 | { |
如果你在windows的PowerShell下执行命令的,需要改为下面这样[^4]:
1 | { |
[^3]: doesn’t work with .nvmrc · Issue #169 · coreybutler/nvm-windows (github.com)
[^4]: Support .nvmrc · Issue #128 · coreybutler/nvm-windows (github.com)