Error: Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64) with Unsupported runtime (93)
For more information on which environments are supported please see:
https://github.com/sass/node-sass/releases/tag/v4.14.1
at module.exports (/Users/hhag/Desktop/test_gulp/node_modules/node-sass/lib/binding.js:13:13)
at Object.<anonymous> (/Users/hhag/Desktop/test_gulp/node_modules/node-sass/lib/index.js:14:35)
at Module._compile (node:internal/modules/cjs/loader:1109:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
at Module.load (node:internal/modules/cjs/loader:989:32)
at Function.Module._load (node:internal/modules/cjs/loader:829:14)
at Module.require (node:internal/modules/cjs/loader:1013:19)
at require (node:internal/modules/cjs/helpers:93:18)
at Object.<anonymous> (/Users/hhag/Desktop/test_gulp/node_modules/gulp-sass/index.js:166:21)
at Module._compile (node:internal/modules/cjs/loader:1109:14)
当我开始使用gulp时出现这个错误。有没有将 gulp-sass 与苹果 m1 一起使用的解决方案?谢谢
我在 M1 上安装
node-sass
时也遇到了问题,最终利用这个机会将其替换为 sass
,按照 LibSass 弃用通知中的建议。
https://sass-lang.com/blog/libsass-is-deprecated
如果您是 Node Sass 的用户,迁移到 Dart Sass 非常简单:只需将 package.json 文件中的 node-sass 替换为 sass 即可。两个包都公开相同的 JavaScript API。
正如@Ti Hausmann提到的,你可以尝试:
npm uninstall node-sass
npm install --save-dev sass
替换完全顺利,它在 M1 上工作,我没有注意到本地或 CI 上有任何性能影响。
对于 npm > 6.9,您只需一行即可将依赖项切换到 dart-sass/sass,然后像以前一样使用 sass。
npm install node-sass@npm:sass
我认为,您使用的是 M1 Mac。并且node-sass目前本身并不支持它。请参阅:https://github.com/sass/node-sass/issues/3033
现在您可以设置目标拱门以通过 Rosetta 运行它:
rm -rf node_modules
npm install --target_arch=x64
我在使用node-sass开发Vue.js项目时遇到了同样的错误。 我通过降级到 Node 版本 14 解决了这个问题。
我已经使用 Node 的版本管理器应用程序 n 完成了此操作。请参阅此答案:https://stackoverflow.com/a/50287454。
检查您正在使用哪个节点版本
$ node -v
v16.3.0
安装
$ npm install -g n
获取您可以安装的可用节点版本列表
$ n ls-remote --all
16.3.0
16.2.0
..
15.14.0
15.13.0
..
14.17.0
14.16.1
..
安装节点版本 14
$ sudo n install 14
为了答案的完整性而添加,我在使用无服务器框架时遇到了这个问题(https://www.serverless.com/)。
我使用 Node 16 和 17 收到节点 gyp 构建错误。
使用 nvm 安装了节点版本 14,这解决了我的问题。
修复步骤是:
然后我能够执行正确安装和构建的纱线命令。
yarn add sass
或 npm install sass
"node-sass":
替换为 "sass":
rm -rf node_modules && npm install
在我的 M1 MBP 上为我工作。
npm rebuild node-sass
这里是官方推荐 per gulp-sass Issue #803 - Apple M1 芯片支持
切换到sass编译器:说明
TL;博士:
npm install sass gulp-sass --save-dev
或者,纱线
yarn add sass gulp-sass --save-dev
const sass = require('gulp-sass')(require('sass'));
或者,对于 ES6 模块
import gulpSass from 'gulp-sass';
const sass = gulpSass(dartSass);
切换到 Sass 在 m1 中效果非常好。正如最上面的答案所指出的。现在我们应该始终使用 sass 来代替 node-sass,因为它已被弃用。
在这里我想指出一个可能有人会陷入的情况。如果是这样的话我想这会节省你一些时间。
您可以通过
npm uninstall
甚至通过执行第二个答案中指出的 npm install node-sass@npm:sass
来删除 node-sass 。您删除了 node-modules
和 package-lock.json
。node-sass
正在编译。
如果是这样的话。请务必检查您的依赖项版本。其中一些很有可能依赖于旧版本上的node-sass。
例如:
"sass-loader": "^8.0.2",
"styles-loader": "^1.0.2"
更新版本到最新=>
"sass-loader": "^12.4.0",
"styles-loader": "^3.0.0"
应该可以了。并确保检查所有可以依赖
node-sass
的依赖项并更新它们。
如果由于某种原因这仍然是一个问题。你可以尝试添加
"optionalDependencies": {
"node-sass": "*"
}
到
package.json
。不过我觉得没必要。
我在发布我的全新 macOS Monterey M1 芯片 Macbook Pro 时遇到了很多困难。没有任何解决方案有效,除了当我使用以下命令设置 NPM 安装的目标架构时修复它。
npm install --target_arch=x64
这个命令对我有用,
npm uninstall node-sass -g && npm cache clean -force && npm install node-sass
yarn remove node-sass
yarn add node-sass --dev
使用本指南 - https://github.com/dlmanning/gulp-sass#setting-a-sass-compiler。这对我帮助很大。只要确保最后 gulp-sass 版本大于 5 即可。
唯一对我有用的命令是:
npm rebuild node-sass