由于 NestJS 项目需要 node16 以上,所以装了 nvm 用来管理 node 版本----由此开始产生问题。
- 换源。
Syntax Error: Error: Cannot find module 'node-sass' Require stack
大部分的文章都会提到是源的问题,换源重装即可。但是没有解决问题。 - 删除 node-sass 重装。来到第二步,原因是 sass-loader 版本低,无法兼容 node-sass,此时可以选择升级重装。但是没有解决问题。
- 指定 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!
Comments
注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。