M1使用nodejs 报错 cannot find module node-darwin-arm64
我查了许多资料,暂且没发现合适的解法。只能推断是某项依赖和arm芯片存在兼容问题。
解决方法是通过转译运行nodejs,首先需要把nodejs卸载,安装 X86的版本。 nodejs 应该是15之后支持M1原生运行。
sudo npm uninstall npm -g
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
所以安装14.xLTS的稳定版本即可,然后我重新yarn 这个时候已经能编译成功。
虽然通过转移运行会损失性能,不过比起不能运行还是好许多的。对于前端开发来说,如果你不确定你目前的项目依赖是否支持arm,还是慎重选择M1。毕竟有许多暗坑不知道多久能填。