对于M1芯片的Mac在安装NVM,并用nvm下载不同的node版本的时候遇到的坑
在开发过程中,经常会遇到node版本太高的问题,所以就想安装低版本的Node,然后就开启下载node旅程。
-下载安装nvm
先是查看自己是否有nvm,有的话就好办了,直接用nvm install 版本号
就好了。如果没有的话就去官网上找到下面的命令执行。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
如果在安装nvm
的时候报错,可以根目录~下的.zshrc
或者.bash_profile
其中一个文件配置
(1)比如打开shell
(2)执行 vim .bash_profile
(3)i
(4)然后复制粘贴下方的配置,esc -> :wq!
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"
(5)source .bash_profile 使其生效
(6)重新下载nvm
下载完nvm
之后,我就赶紧安装Node
。
可是事情并没我想的那么简单。经过无数次尝试nvm install 版本号
,一直报错。绝望了~~~
后来通过nvm官网才知道,M1芯片的系统,node版本在小于15.*
以下的都安装不了,因为arm 64
架构下是没有预编译 NodeJS 二进制文件的。
January 2021: there are no pre-compiled NodeJS binaries for versions prior to 15.x for Apple's new M1 chip (arm64 architecture).
使用nvm下载node,虽然c++编译成功,但是还是会报内存不足错误。
- using
nvm
to install, say,v14.15.4
:- the C code compiles successfully
- but crashes with an out of memory error when used
- increasing the memory available to node still produces the out of memory errors:
- when using
nvm
to install some versions, the compilation fails
-解决办法
根据官网可知他的解决办法是 将 shell 的体系结构从 arm64 更改为 x86。
#查看Node版本
$ node --version
v14.15.4
#检查“节点”二进制文件的体系结构
$ node -p process.arch
arm64
#这证实了arch是针对M1芯片的,这是导致问题的原因。
#所以我们需要卸载它。
#无法卸载当前使用的版本,请切换到其他版本:
$ nvm install v12.20.1
#现在卸载要替换的版本:
$ nvm uninstall v14.15.4
#在64位X86体系结构下启动新的zsh进程:
$ arch -x86_64 zsh
#使用nvm安装节点,这将下载预编译的x64二进制文件:
$ nvm install v14.15.4
#现在检查架构是否正确:
$ node -p process.arch
x64
# 现在可以安全地返回到arm64 zsh进程:
$ exit
# 我们回到了本机shell:
$ arch
arm64
# 新版本现在可供使用:
$ nvm use v14.15.4
Now using node v14.15.4 (npm v6.14.10)
-设置默认版本
通过以上方式安装nvm后,切换好node版本,但是每次打开vscode后,版本号会变掉,这个时候可以设置默认版本
nvm alias default version
转载自:https://juejin.cn/post/7002566911456182303