10月18, 2023

记一个Mac M2 + Node14 + node-sass的坑

由于 NestJS 项目需要 node16 以上,所以装了 nvm 用来管理 node 版本----由此开始产生问题。

  1. 换源。 Syntax Error: Error: Cannot find module 'node-sass' Require stack 大部分的文章都会提到是源的问题,换源重装即可。但是没有解决问题。
  2. 删除 node-sass 重装。来到第二步,原因是 sass-loader 版本低,无法兼容 node-sass,此时可以选择升级重装。但是没有解决问题。
  3. 指定 node-sass 版本重装。这一步大部分文章指出是 node-sass 以及 sass-loader 与当前 node 版本不对应,查找到对应 node 版本的版本号重装即可。但还是没有解决问题。

此时已经开始陷入迷茫,我又仔细查看了一遍错误日志,发现提示 Python 环境有问题,虽然没有动过相关环境,Mac 也自带了 Python3 环境,但还是查找了一下解决办法。

  • 由于 Mac 的 Rootless 环境,使用 Root 权限依然无法修改/usr/local/bin中的文件,所以先whereis python3找到 Python3 的路径,拷贝一份出来并修改名称为 Python,然后配置环境变量export PATH=/usr/local(此处为拷贝出来的 Python3 路径):$PATH,然后source ~/.bash_profile或者重启终端。

配置好 Python 环境后,重新 npm i,提示FATAL ERROR: wasm code commit Allocation failed - process out of memory,根据一个回答中的相关描述,Arm64 架构对于 Node@14 的支持有一些问题,于是参考 Github 上 NVM 的相关 issue 以及文章的描述,发现 M 系列芯片 安装 16 版本之前的 Node 时,需要使用 rosetta 启动终端。解决办法是:

  • 找到应用程序的“终端” -> 点击显示简介 -> 在简介信息中勾选“使用 Rosetta 打开” -> 打开后重装 Node@14.16.0 -> 关闭终端。 切出 item2 后,执行npm run dev发现提示Node Sass could not find a binding for your current environment: OS X 64-bit,按照提示中的解决办法,使用npm rebuild node-sass,rebuild 完成后重新运行项目,Done!

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。