prefacio
Cambié recientemente el sistema macOS y, después de retirar el proyecto, la dependencia de instalación informó un error:
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
Después de consultar este artículo sobre la instalación de node-sass en el chip M1 , descubrí que el motivo es: la versión de node y node-sass no coinciden . El nodo-sass del código es la versión v4.14.1 (requiere una versión inferior al nodo 15) y mi nodo es la v14 (pero el chip M1 solo es compatible con el nodo v15.3.0 o superior, porque la versión inferior del nodo no se basa en la arquitectura arm64).
solución:
Solución 1: deje que el shell se ejecute en Rosetta2 a través de arch -x86_64 zsh y Rosetta2 traducirá el paquete npm instalado.
#通过命令可以让 shell 运行在Rosetta2下
arch -x86_64 zsh
安装低版本 Node
nvm install v12
Luego use cnpm para instalar la versión [email protected] por separado. En este momento, el error de descarga dependiente se ha resuelto.
Si se informa un error cuando se inicia el proyecto:
Syntax Error: Error: Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64) with Node.js 14.x
Este error significa que Node Sass no es compatible con la arquitectura (arm64) de su entorno, que es OS X con Node.js versión 14.X. Cambiar a una versión inferior de Node.js (12.x) también puede resolver el problema de informe de errores anterior.
Solución 2: compilar Node Sass con GCC o intérprete clang
Después de consultar la información, además de la solución anterior, también puede compilar node-sass a través de otras arquitecturas para resolver el problema de incompatibilidad.
Sin embargo, esta solución necesita expandir herramientas de interpretación adicionales y es relativamente engorrosa de usar, por lo que no se recomienda; aquí solo daré una breve introducción al uso (ps: no he verificado esta solución).
Esta solución implica el conocimiento de los compiladores gcc, llvm y clang. Para obtener más detalles, consulte este artículo: Explicación detallada de los tres compiladores principales: gcc, llvm y clang.
Operación específica:
use los siguientes comandos en la terminal para usar diferentes arquitecturas (como x86-64):
llvm-gcc -march=x86-64 -mcpu=sandybridge yourfile.c -o yourfile
clang -march=x86-64 -mcpu=sandybridge yourfile.c -o yourfile
Estas dos instrucciones se utilizan para compilar su programa. Específicamente, especifican que el compilador compila su programa para ejecutarlo en procesadores x86-64 utilizando el conjunto de instrucciones x86-64 proporcionado por la arquitectura Sandy Bridge.
El comando anterior compilará el archivo "yourfile.c" y lo llamará "yourfile". El parámetro -march especifica la arquitectura de la máquina, mientras que el parámetro -mcpu especifica el conjunto de instrucciones del procesador real de la arquitectura (en este caso Shaheqiao).
También puede utilizar declaraciones alternativas como "gcc" o "clang" en lugar de "llvm-gcc" o "clang" mencionados anteriormente, para compilar programas con compiladores estándar GCC o Clang.
otras extensiones
Instale el compilador GCC a través de la línea de comando de Homebrew
El proceso de instalación es el siguiente:
-
在终端中输入brew install gcc,开始安装gcc包。
-
输入brew link --overwrite gcc,完成gcc安装和链接。
Para usar GCC, puede ingresar gcc –v en la terminal para obtener información de la versión de GCC, o ingresar gcc myfile.c –o myfile para compilar el archivo myfile.c y generar el archivo myfile.
Un comando de ejemplo para compilar Node Sass con el compilador GCC:
gcc ./node-sass.c -o node-sass
Puede que tarde mucho tiempo en descargar gcc, porque los paquetes dependientes relacionados se descargarán sincrónicamente, finalmente no pude descargar y el error es el siguiente:
Error: gcc: Failed to download resource "gcc"
Download failed: https://ghcr.io/v2/homebrew/core/gcc/blobs/sha256:d0dd262f7d681d5bbcc39bea85d0dd355f2f962060afe4de16432fbe9596bf8c
Luego modifique la dirección de origen de la preparación para continuar,
git -C "$(brew --repo)" origen remoto set-url [dirección de origen]
#默认下载地址
https://mirrors.ustc.edu.cn/brew.git
#腾讯云下载地址
https://mirrors.cloud.tencent.com/homebrew/brew.git
#华为云下载地址
https://mirrors.huaweicloud.com/homebrew/brew.git
Después de una larga espera, los compiladores gcc y llvm aún no se pudieron descargar. . .