Node.js: Python no encontró excepción debido a node-sass y node-gyp

Resuelto Vipul Panth asked hace 7 años • 37 respuestas

De repente, en uno de mis entornos jenkins, la compilación comenzó a fallar, mientras que en la máquina local parece estar funcionando bien ya que tengo Python instalado.

A partir de los registros, pude detectar que el problema está en la dependencia interna que es node-gyp v3.5.0 de node-sass v3.8.0 cuando investigué visitando esto sobre node-gyp y encontré el requisito previo de que se debe instalar Python. .

Entonces mi pregunta es qué versión de node-sass puedo instalar para evitar esto o hay una solución mejor ya que mi compilación funcionó bien hasta esta mañana en el mismo entorno.

Nodo v5.10.1

REGISTRO DE ERRORES

gyp verb check python checking for Python executable "python2" in the PATH
gyp verb `which` failed Error: not found: python2
gyp verb `which` failed     at getNotFoundError (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:13:12)
gyp verb `which` failed     at F (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:68:19)
gyp verb `which` failed     at E (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:80:29)
gyp verb `which` failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:89:16
gyp verb `which` failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\isexe\index.js:44:5
gyp verb `which` failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\isexe\windows.js:29:5
gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:82:15)
gyp verb `which` failed  python2 { [Error: not found: python2] code: 'ENOENT' }
gyp verb check python checking for Python executable "python" in the PATH
gyp verb `which` failed Error: not found: python
gyp verb `which` failed     at getNotFoundError (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:13:12)
gyp verb `which` failed     at F (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:68:19)
gyp verb `which` failed     at E (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:80:29)
gyp verb `which` failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:89:16
gyp verb `which` failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\isexe\index.js:44:5
gyp verb `which` failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\isexe\windows.js:29:5
gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:82:15)
gyp verb `which` failed  python { [Error: not found: python] code: 'ENOENT' }
gyp verb could not find "python". checking python launcher 
gyp verb could not find "python". guessing location 
gyp verb ensuring that file exists: C:\Python27\python.exe
gyp ERR! configure error 
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at Object.failNoPython (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\node-gyp\lib\configure.js:454:19)
gyp ERR! stack     at Object.<anonymous> (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\node-gyp\lib\configure.js:480:16)
gyp ERR! stack     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\graceful-fs\polyfills.js:284:29
gyp ERR! stack     at FSReqWrap.oncomplete (fs.js:82:15)
gyp ERR! System Windows_NT 6.3.9600
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files (x86)\\Jenkins\\jobs\\NdbSite-hot-fix-Manual-PreBuild\\workspace\\src\\NdbSite.UI\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\node-sass
gyp ERR! node -v v5.10.1
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok 
Build failed

Cualquier idea es muy apreciada, gracias.

Vipul Panth avatar Aug 21 '17 23:08 Vipul Panth
Aceptado

Entonces esto me pasó en Windows recientemente. Lo soluciono siguiendo los siguientes pasos usando PowerShell con privilegios de administrador:

  1. eliminar node_modulescarpeta
  2. ejecutándose npm install --global windows-build-toolscon privilegio administrativo. (en mi caso necesito reiniciar, ¡y reiniciar sin preguntar!)
  3. reinstalar módulos de nodo o node-sass connpm install
Shezan Kazi avatar Oct 26 '2018 13:10 Shezan Kazi

El mensaje de error significa que no puede localizar su ejecutable o binario de Python.

En muchos casos, se instala en c:\python27. si aún no está instalado, puede instalarlo con npm install --global windows-build-tools, que sólo funcionará si aún no se ha instalado.

Agregarlo a las variables de entorno no siempre funciona. Una mejor alternativa es simplemente configurarlo en la configuración de npm.

npm config set python "C:\Python27\python.exe"

bvdb avatar Oct 22 '2020 16:10 bvdb

Debe seguir los pasos a continuación para corregir el error:

    1: DELETE node_modules
    2: npm install node-sass@<version-as-per-below-table>
    3. npm install

Cada versión de node-sass corresponde a una compilación Node.JS específica.

A continuación se muestra una guía rápida para las versiones mínimas y máximas admitidas de node-sass ( consulte las actualizaciones de la siguiente tabla aquí ):


| NodeJS  | Supported node-sass version | Node Module |
|---------|-----------------------------|-------------|
| Node 20 | 9.0+                        | 115         |
| Node 19 | 8.0+                        | 111         |
| Node 18 | 8.0+                        | 108         |
| Node 17 | 7.0+, <8.0                  | 102         |
| Node 16 | 6.0+                        | 93          |
| Node 15 | 5.0+                        | 88          |
| Node 14 | 4.14+                       | 83          |
| Node 13 | 4.13+, <5.0                 | 79          |
| Node 12 | 4.12+                       | 72          |
| Node 11 | 4.10+, <5.0                 | 67          |
| Node 10 | 4.9+, <6.0                  | 64          |
| Node 8  | 4.5.3+, <5.0                | 57          |
| Node <8 | <5.0                        | <57         |

Gopal Mishra avatar Sep 09 '2021 14:09 Gopal Mishra

Dos opciones (diciembre 2021):

  • 1 - ¡No puedes actualizar el paquete " node-sass "!
    • Instale Python 2 y modifique su .exenombre de archivo.
    • Se corrigió PATHel orden de los registros variables env (detalles a continuación).
  • 2 - Actualizar el paquete node-sass .

Condición previa

Actualizó Node.JS a la última versión (v16.13.1) en Windows 10.
Ejecuta yarn installo npm installen la carpeta de su proyecto y recibe un error (consulte a continuación).

Opción 1. Instalación de Python-2 y reparación PATHdel entorno

Última versión de Python 2

Ver instalador MSI ingrese la descripción de la imagen aquí

Después de la instalación Instalaciones de Python

¡Nota! Intente reinstalar la última versión de Node.js en x86 desde x64, si aparece el siguiente error en x64. (Pero con x86 también podría recibir errores de límite de memoria).

Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (93)

Registros de Python Resort en PATHla variable env

¡Los registros de Python 3 deben estar por encima de los registros de Python 2!

Edición de variables de entorno PATH

Clasificación de registros de Python en la variable de entorno PATH

Copiar python.exeapython2.exe

Cambio de nombre de python.exe a python2.exe

Opción 2. Actualización del node-sasspaquete

sobre package.jsonarchivo

Modifique package.jsony ejecute yarn installo npm installen la carpeta de su proyecto.
Otros archivos se actualizarán automáticamente.

Antesantes de actualizar antes de actualizar en package.json

Después de la actualización:Después de actualizar

O use hilo o npm CLI para hacer lo mismo, pero puede cambiar notablemente sus .lockarchivos.

Después de actualizar, es posible que te des cuenta de que también necesitas actualizar sass-loader, webpacketc.

Error que puede tener (para su información)

gyp verb check python checking for Python executable "python2" in the PATH
gyp verb `which` failed Error: not found: python2

gyp ERR! stack Error: Command failed: C:\Python310\python.EXE -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack   File "<string>", line 1
gyp ERR! stack     import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gyp ERR! stack SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
it3xl avatar Dec 08 '2021 12:12 it3xl

Mi máquina es Windows 10 , me enfrenté a problemas similares al intentar compilar SASS usando node-sassel paquete. La versión de mi nodo es v10.16.3 y la versión de npm es 6.9.0

La forma en que resolví el problema:

  1. Al principio elimine package-lock.jsonel archivo y node_modules/la carpeta.
  2. Abra Windows PowerShell como administrador.
  3. Ejecute el comando npm i -g node-sass.
  4. Después de eso, vaya a la carpeta del proyecto y ejecutenpm install
  5. Y finalmente, ejecute el script de compilación SASS , en mi caso, esnpm run build:css

¡¡Y funciona!!

Fatema Tuz Zuhora avatar Oct 07 '2019 18:10 Fatema Tuz Zuhora