Mi aplicación usa sass, no node-sass. node-sass no está en ninguna parte de mi paquete-lock.json.
Actualmente estoy usando npm 6 y todo funciona bien desde hace años.
Cuando intento npm install con npm 7, falla con el siguiente error.
¿Que esta pasando? ¿Quizás node-sass es una dependencia de desarrollo de otra cosa y se está construyendo?
npm ERR! npm ERR! code 1 npm ERR! npm ERR! path /Users/john/.npm/_cacache/tmp/git-clonenbaf30/node_modules/node-sass npm ERR! npm ERR! command failed npm ERR! npm ERR! command sh -c node scripts/build.js npm ERR! npm ERR! Building: /opt/local/bin/node /Users/john/.npm/_cacache/tmp/git-clonenbaf30/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library= npm ERR! npm ERR! c++ '-DNODE_GYP_MODULE_NAME=libsass' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DLIBSASS_VERSION="3.3.6"' -I/Users/john/.node-gyp/14.18.3/include/node -I/Users/john/.node-gyp/14.18.3/src -I/Users/john/.node-gyp/14.18.3/deps/uv/include -I/Users/john/.node-gyp/14.18.3/deps/v8/include -I../src/libsass/include -O3 -gdwarf-2 -mmacosx-version-min=10.7 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=c++11 -stdlib=libc++ -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/libsass/src/libsass/src/eval.odraw -c -o Release/obj.target/libsass/src/libsass/src/eval.o ../src/libsass/src/eval.cpp ### above line repeated many times npm ERR! npm ERR!Es posible que esté utilizando una versión de Node o npm que no sea compatible con la versión de node-sass que se extrae. node-sass publica esta tabla que muestra el rango de versiones admitidas para cualquier versión de la cadena de herramientas. Si una de sus dependencias está extrayendo node-sass , puede forzar su versión deseada especificando explícitamente node-sass como una dependencia directa. También podría considerar actualizar Node o npm como alternativa.
Para ver qué sucedería, probé npm install --package-lock-only y funcionó. Entonces pude ver el árbol de dependencia. node_modules/sass-loader tiene node-sass como una dependencia de pares.
npm7 instala las dependencias de pares de forma predeterminada y no permite entrar en un estado ambiguo. (más información: https://stackoverflow.com/a/22004559/168143 )
Entonces, por eso estaba pasando esto. No sé si no estaba leyendo el seguimiento de la pila lo suficientemente bien o si hay alguna otra forma estándar para descubrir qué tenía las dependencias. Dejaré esta pregunta sin una respuesta aceptada en caso de que alguien tenga una forma más inteligente de diagnosticar este tipo de cosas.