关于macOS系统M1芯片安装node-sass报错的解决方案

前言

最近更换macOS系统,pull项目后安装依赖时报错:

Error: Can't find Python executable "python", you can set the PYTHON env var
index.js:1 Uncaught Error: Module build failed: Error: ENOENT: no such file

参考 M1芯片 安装node-sass报错 这篇文章后 ,得知原因是:node与node-sass版本不匹配。代码的node-sass是v4.14.1版本(需要node15以下的版本),而我的node 是 v14(但M1芯片仅兼容node v15.3.0 以上,因为低版本的 node 并不是基于 arm64 架构的)。

解决方案:

方案一: 通过arch -x86_64 zsh 让shell运行在Rosetta2下,安装的npm包会经过Rosetta2转译

#通过命令可以让 shell 运行在Rosetta2下
arch -x86_64 zsh

安装低版本 Node
nvm install v12

然后用cnpm 单独安装[email protected]版本,此时依赖下载报错已经解决。

如果项目启动时报错:

Syntax Error: Error: Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64) with Node.js 14.x

此错误表示Node Sass不支持您的环境的体系结构(arm64),即Node.js版本14.X的OS X。切换到低版本的Node.js(12.x)时也能解决以上报错问题。

方案二: 使用GCC 或 clang解释器编译 Node Sass

经查阅资料,除上面方案外,还可以通过其它体系结构来编译node-sass ,解决不兼容问题。
但此方案需要扩展额外的解释器工具而且使用相对麻烦,不建议采用;这里我只做简单的使用介绍(ps: 该方案我没做验证)。

该方案涉及到gcc、llvm 和 clang编译器的知识,具体可以看看这篇文章:详解三大编译器:gcc、llvm 和 clang

具体操作:
在终端通过以下指令来使用不同的架构(例如x86-64):

llvm-gcc -march=x86-64 -mcpu=sandybridge yourfile.c -o yourfile
clang -march=x86-64 -mcpu=sandybridge yourfile.c -o yourfile

这两条指令用于编译您的程序。具体来说,他们指定了编译器要使用沙河桥(Sandy Bridge)架构提供x86-64指令集编译您的程序,以便在x86-64架构的处理器上运行。

上面的指令将编译文件“yourfile.c”,并将其命名为“yourfile”。 -march参数指定了机器架构,而-mcpu参数指定了架构的实际处理器指令集(在这种情况下是沙河桥)。

您也可以使用替代语句,例如“gcc”或“clang”,而不是上面提到的“llvm-gcc”或“clang”,以使用标准GCC或Clang编译器编译程序。

其它扩展

通过Homebrew命令行安装GCC编译器

安装使用流程如下:

  •   在终端中输入brew install gcc,开始安装gcc包。
    
  •   输入brew link --overwrite gcc,完成gcc安装和链接。
    

要使用GCC,可以在终端中输入gcc –v,获取GCC版本信息,或者输入gcc myfile.c –o myfile,编译myfile.c文件,生成myfile文件。

使用GCC编译器编译 Node Sass的指令示例:
gcc ./node-sass.c -o node-sass

在下载gcc时可能会耗时很久,因为会同步下载相关的依赖包,我最后下载失败了, 报错如下:

Error: gcc: Failed to download resource "gcc"
Download failed: https://ghcr.io/v2/homebrew/core/gcc/blobs/sha256:d0dd262f7d681d5bbcc39bea85d0dd355f2f962060afe4de16432fbe9596bf8c

然后又修改brew源地址 继续下,
git -C “$(brew --repo)” remote set-url origin [源地址]

#默认下载地址
https://mirrors.ustc.edu.cn/brew.git   
#腾讯云下载地址
https://mirrors.cloud.tencent.com/homebrew/brew.git
#华为云下载地址
https://mirrors.huaweicloud.com/homebrew/brew.git

漫长的等待后,gcc和llvm编译器依然下载失败。。。

你可能感兴趣的:(m1芯片node-sass问题,macos,npm,node-sass,m1芯片)