最近入手了一款M2 pro芯片的mac,在使用nvm来管理node版本的时候发现在安装nodeV14.x版本的出现死循环的情况具体输出如下

1
2
3
ls/toolutil  -O3 -gdwarf-2 -mmacosx-version-min=10.13 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++1y -stdlib=libc++ -fno-exceptions -fno-strict-aliasing -MMD -MF /Users/miaojiangwei/.nvm/.cache/src/node-v14.21.3/files/out/Release/.deps//Users/miaojiangwei/.nvm/.cache/src/node-v14.21.3/files/out/Release/obj.host/icutools/deps/icu-small/source/i18n/upluralrules.o.d.raw   -c
g++ -o /Users/miaojiangwei/.nvm/.cache/src/node-v14.21.3/files/out/Release/obj.host/icutools/deps/icu-small/source/i18n/collationdatareader.o ../deps/icu-small/source/i18n/collationdatareader.cpp '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-DNODE_OPENSSL_CONF_NAME=nodejs_conf' '-DICU_NO_USER_DATA_OVERRIDE' '-D_DARWIN_USE_64_BIT_INODE=1' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DU_COMMON_IMPLEMENTATION=1' '-DU_I18N_IMPLEMENTATION=1' '-DU_IO_IMPLEMENTATION=1' '-DU_TOOLUTIL_IMPLEMENTATION=1' '-DU_ATTRIBUTE_DEPRECATED=' '-D_CRT_SECURE_NO_DEPRECATE=' '-DU_STATIC_IMPLEMENTATION=1' '-DUCONFIG_NO_SERVICE=1' '-DU_ENABLE_DYLOAD=0' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0' -I../deps/icu-small/source/common -I../deps/icu-small/source/i18n -I../deps/icu-small/source/tools/toolutil -O3 -gdwarf-2 -mmacosx-version-min=10.13 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++1y -stdlib=libc++ -fno-exceptions -fno-strict-aliasing -MMD -MF /Users/miaojiangwei/.nvm/.cache/src/node-v14.21.3/files/out/Release/.deps//Users/miaojiangwei/.nvm/.cache/src/node-v14.21.3/files/out/Release/obj.host/icutools/deps/icu-small/source/i18n/collationdatareader.o.d.raw -c
g++ -o /Users/miaojiangwei/.nvm/.cache/src/node-v14.21.3/files/out/Release/obj.host/icutools/deps/icu-small/source/i18n/dtptngen.o ../deps/icu-small/source/i18n/dtptngen.cpp '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-DNODE_OPENSSL_CONF_NAME=nodejs_conf' '-DICU_NO_USER_DATA_OVERRIDE' '-D_DARWIN_USE_64_BIT_INODE=1' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DU_COMMON_IMPLEMENTATION=1' '-DU_I18N_IMPLEMENTATION=1' '-DU_IO_IMPLEMENTATION=1' '-DU_TOOLUTIL_IMPLEMENTATION=1' '-DU_ATTRIBUTE_DEPRECATED=' '-D_CRT_SECURE_NO_DEPRECATE=' '-DU_STATIC_IMPLEMENTATION=1' '-DUCONFIG_NO_SERVICE=1' '-DU_ENABLE_DYLOAD=0' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0' -I../deps/icu-small/source/common -I../deps/icu-small/source/i18n -I../deps/icu-small/source/tools/toolutil -O3 -gdwarf-2 -mmacosx-version-min=10.13 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++1y -stdlib=libc++ -fno-exceptions -fno-strict-aliasing -MMD -MF /Users/miaojiangwei/.nvm/.cache/src/node-v14.21.3/files/out/Release/.deps//Users/miaojiangwei/.nvm/.cache/src/node-v14.21.3/files/out/Release/obj.host/icutools/deps

执行install命令前执行M2兼容命令

1
arch -x86_64 zsh
1
2
3
4
5
6
7
8
9
➜  3d-geoMap git:(master) ✗ arch -x86_64 zsh
➜ 3d-geoMap git:(master) ✗ nvm install 14.21.3
Downloading and installing node v14.21.3...
Downloading https://nodejs.org/dist/v14.21.3/node-v14.21.3-darwin-x64.tar.xz...
########################################################################################################### 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v14.21.3 (npm v6.14.18)
➜ 3d-geoMap git:(master) ✗