Node Sass 与苹果 m1、Big Sur 和 arm64

问题描述 投票:0回答:14
 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 一起使用的解决方案?谢谢

npm gulp-sass apple-m1
14个回答
117
投票

我在 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 上有任何性能影响。


87
投票

对于 npm > 6.9,您只需一行即可将依赖项切换到 dart-sass/sass,然后像以前一样使用 sass。

npm install node-sass@npm:sass


34
投票

我认为,您使用的是 M1 Mac。并且node-sass目前本身并不支持它。请参阅:https://github.com/sass/node-sass/issues/3033

现在您可以设置目标拱门以通过 Rosetta 运行它:

rm -rf node_modules
npm install --target_arch=x64

19
投票

我在使用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


6
投票

为了答案的完整性而添加,我在使用无服务器框架时遇到了这个问题(https://www.serverless.com/)。

我使用 Node 16 和 17 收到节点 gyp 构建错误。

使用 nvm 安装了节点版本 14,这解决了我的问题。

修复步骤是:

  1. nvm 安装 v14
  2. nvm 使用 14

然后我能够执行正确安装和构建的纱线命令。


5
投票
  1. yarn add sass
    npm install sass
  2. 将 package.json 中的
    "node-sass": 
    替换为
    "sass": 
  3. rm -rf node_modules && npm install

在我的 M1 MBP 上为我工作。


4
投票
  1. 从此处下载将节点重新安装到版本 14 https://nodejs.org/dist/v14.0.0/
  2. 在您的项目文件夹中运行
    npm rebuild node-sass

4
投票

这里是官方推荐 per gulp-sass Issue #803 - Apple M1 芯片支持

切换到sass编译器:说明

TL;博士:

  1. 安装不包含默认 Sass 编译器的 Node-sass 版本 5:

npm install sass gulp-sass --save-dev

或者,纱线

yarn add sass gulp-sass --save-dev

  1. 在 gulpfile 中显式设置编译器:

const sass = require('gulp-sass')(require('sass'));

或者,对于 ES6 模块

import gulpSass from 'gulp-sass';
const sass = gulpSass(dartSass);

2
投票

切换到 Sass 在 m1 中效果非常好。正如最上面的答案所指出的。现在我们应该始终使用 sass 来代替 node-sass,因为它已被弃用。

在这里我想指出一个可能有人会陷入的情况。如果是这样的话我想这会节省你一些时间。

案例

您可以通过

npm uninstall
甚至通过执行第二个答案中指出的
npm install node-sass@npm:sass
来删除 node-sass 。您删除了
node-modules
package-lock.json

仍然遇到同样的问题,不知何故
node-sass
正在编译。

尝试安装 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
。不过我觉得没必要。


1
投票

我在发布我的全新 macOS Monterey M1 芯片 Macbook Pro 时遇到了很多困难。没有任何解决方案有效,除了当我使用以下命令设置 NPM 安装的目标架构时修复它。

npm install --target_arch=x64

0
投票

这个命令对我有用,

npm uninstall node-sass -g && npm cache clean -force && npm install node-sass

0
投票

纱线:

yarn remove node-sass
yarn add node-sass --dev

0
投票

使用本指南 - https://github.com/dlmanning/gulp-sass#setting-a-sass-compiler。这对我帮助很大。只要确保最后 gulp-sass 版本大于 5 即可。


0
投票

唯一对我有用的命令是:

npm rebuild node-sass
© www.soinside.com 2019 - 2024. All rights reserved.