Mi problema parece similar a este problema, excepto que sucede cuando ejecuto yarn install en una aplicación de Rails.
Cuando ejecuto yarn install , se ejecuta correctamente durante algún tiempo, luego
../src/libsass/src/ast.hpp:1614:25: warning: loop variable 'numerator' of type 'const std::__1::basic_string<char>' creates a copy from type 'const std::__1::basic_string<char>' [-Wrange-loop-analysis] for (const auto numerator : numerators) ^ ../src/libsass/src/ast.hpp:1614:14: note: use reference type 'const std::__1::basic_string<char> &' to prevent copying for (const auto numerator : numerators) ^~~~~~~~~~~~~~~~~~~~~~ & ../src/libsass/src/ast.hpp:1616:25: warning: loop variable 'denominator' of type 'const std::__1::basic_string<char>' creates a copy from type 'const std::__1::basic_string<char>' [-Wrange-loop-analysis] for (const auto denominator : denominators) ^ ../src/libsass/src/ast.hpp:1616:14: note: use reference type 'const std::__1::basic_string<char> &' to prevent copying for (const auto denominator : denominators) ^~~~~~~~~~~~~~~~~~~~~~~~ & 2 warnings generated. rm -f Release/sass.a && ./gyp-mac-tool filter-libtool libtool -static -o Release/sass.a Release/obj.target/libsass/src/libsass/src/ast.o Release/obj.target/libsass/src/libsass/src/ast_fwd_decl.o Release/obj.target/libsass/src/libsass/src/backtrace.o Release/obj.target/libsass/src/libsass/src/base64vlq.o Release/obj.target/libsass/src/libsass/src/bind.o Release/obj.target/libsass/src/libsass/src/cencode.o Release/obj.target/libsass/src/libsass/src/check_nesting.o Release/obj.target/libsass/src/libsass/src/color_maps.o Release/obj.target/libsass/src/libsass/src/constants.o Release/obj.target/libsass/src/libsass/src/context.o Release/obj.target/libsass/src/libsass/src/cssize.o Release/obj.target/libsass/src/libsass/src/emitter.o Release/obj.target/libsass/src/libsass/src/environment.o Release/obj.target/libsass/src/libsass/src/error_handling.o Release/obj.target/libsass/src/libsass/src/eval.o Release/obj.target/libsass/src/libsass/src/expand.o Release/obj.target/libsass/src/libsass/src/extend.o Release/obj.target/libsass/src/libsass/src/file.o Release/obj.target/libsass/src/libsass/src/functions.o Release/obj.target/libsass/src/libsass/src/inspect.o Release/obj.target/libsass/src/libsass/src/json.o Release/obj.target/libsass/src/libsass/src/lexer.o Release/obj.target/libsass/src/libsass/src/listize.o Release/obj.target/libsass/src/libsass/src/memory/SharedPtr.o Release/obj.target/libsass/src/libsass/src/node.o Release/obj.target/libsass/src/libsass/src/operators.o Release/obj.target/libsass/src/libsass/src/output.o Release/obj.target/libsass/src/libsass/src/parser.o Release/obj.target/libsass/src/libsass/src/plugins.o Release/obj.target/libsass/src/libsass/src/position.o Release/obj.target/libsass/src/libsass/src/prelexer.o Release/obj.target/libsass/src/libsass/src/remove_placeholders.o Release/obj.target/libsass/src/libsass/src/sass.o Release/obj.target/libsass/src/libsass/src/sass2scss.o Release/obj.target/libsass/src/libsass/src/sass_context.o Release/obj.target/libsass/src/libsass/src/sass_functions.o Release/obj.target/libsass/src/libsass/src/sass_util.o Release/obj.target/libsass/src/libsass/src/sass_values.o Release/obj.target/libsass/src/libsass/src/source_map.o Release/obj.target/libsass/src/libsass/src/subset_map.o Release/obj.target/libsass/src/libsass/src/to_c.o Release/obj.target/libsass/src/libsass/src/to_value.o Release/obj.target/libsass/src/libsass/src/units.o Release/obj.target/libsass/src/libsass/src/utf8_string.o Release/obj.target/libsass/src/libsass/src/util.o Release/obj.target/libsass/src/libsass/src/values.o c++ '-DNODE_GYP_MODULE_NAME=binding' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/st/.node-gyp/16.0.0/include/node -I/Users/st/.node-gyp/16.0.0/src -I/Users/st/.node-gyp/16.0.0/deps/openssl/config -I/Users/st/.node-gyp/16.0.0/deps/openssl/openssl/include -I/Users/st/.node-gyp/16.0.0/deps/uv/include -I/Users/st/.node-gyp/16.0.0/deps/zlib -I/Users/st/.node-gyp/16.0.0/deps/v8/include -I../../nan -I../src/libsass/include -O3 -gdwarf-2 -mmacosx-version-min=10.7 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=c++11 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/binding/src/binding.odraw -c -o Release/obj.target/binding/src/binding.o ../src/binding.cpp In file included from ../src/binding.cpp:1: In file included from ../../nan/nan.h:56: In file included from /Users/st/.node-gyp/16.0.0/include/node/node.h:63: In file included from /Users/st/.node-gyp/16.0.0/include/node/v8.h:30: /Users/st/.node-gyp/16.0.0/include/node/v8-internal.h:452:38: error: no template named 'remove_cv_t' in namespace 'std'; did you mean 'remove_cv'? !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data); ~~~~~^~~~~~~~~~~ remove_cv /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits:697:50: note: 'remove_cv' declared here template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_cv ^ 1 error generated. make: *** [Release/obj.target/binding/src/binding.o] Error 1 gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/Users/st/rails/myapp/node_modules/node-gyp/lib/build.js:262:23) gyp ERR! stack at ChildProcess.emit (node:events:365:28) gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12) gyp ERR! System Darwin 20.3.0 gyp ERR! command "/usr/local/Cellar/node/16.0.0/bin/node" "/Users/st/rails/myapp/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library=" gyp ERR! cwd /Users/st/rails/myapp/node_modules/node-sass gyp ERR! node -v v16.0.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok¿Alguna idea de como resolver esto? (Ni siquiera estoy seguro de si es un problema con xcode/node/rails/c++)
Otras notas
/usr/bin/xcodebuild -version devuelve Xcode 12.4 Build version 12D4ecpp --version devuelve Apple clang version 12.0.0 (clang-1200.0.32.29) Target: x86_64-apple-darwin20.3.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/binTenga en cuenta: no codifico en cpp, por lo que tengo muy poco conocimiento contextual sobre cómo resolver.
Dado que algunas de las respuestas a esta pregunta, se ha lanzado una nueva versión de node-sass ( v6 ) que soluciona el problema al agregar soporte para el nodo 16.
En mi caso, Rails dependía de una versión anterior de node-sass debido a la versión de @rails/webpacker que tenía en mi package.json ( 4.3.0 ). Actualizar esto a una versión posterior a la versión actual en el momento de esta respuesta, 5.4.0 , resolvió el problema.
Vuelva a la última versión de Node v14 LTS para usar node-sass :
brew install node@14 brew unlink node brew link node@14 node -v spring stopEjecute en su proyecto Rails:
yarn installPD: el nodo 16 tiene errores con node-sass https://github.com/nodejs/node/issues/38367#issuecomment-825461899
No sé sobre el const auto numerator .
Pero cuando ~/Library/Caches/node-gyp/16.4.0/include/node/v8-internal.h (el tuyo tiene un directorio diferente) como se muestra en el error de mi terminal, procede a la compilación sin error.
Mi solución:
Cambié el nombre de remove_cv_t a remove_cv como se indica en el mensaje de error.
luego proceda a la compilación.
Lo que planeo a continuación después de esta solución temporal es actualizar ng xcode. Tal vez tenga la definición de plantilla actualizada como se indica en el mensaje de error
template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_cvPara chips Apple M1, la forma de trabajo es:
sudo xcode-select --install curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash nvm install v15 nvm cache clearEn mi caso, acabo de cambiar el nodo del 12 al 10:
nvm use 10Traté de ver mi versión actual con
cpp --versionque dacpp --version Apple clang version 12.0.0 (clang-1200.0.32.29) Target: x86_64-apple-darwin20.3.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
La versión del compilador no es la versión estándar de C++.
La primera es la versión de la herramienta, la segunda es la versión del estándar C++.
Mientras tanto, todos los principales compiladores recientes de C ++ (lo sé) admiten múltiples estándares de C ++.
El estándar C++ es importante si se va a desarrollar un código portátil (conforme al estándar), independiente de un compilador específico. Esto permite desarrollar código para múltiples plataformas, compilado por diferentes compiladores. También ayuda a desarrollar con mejor calidad: una debilidad en el código que puede pasar desapercibida (es decir, ser tolerada) en el compilador de un proveedor, podría quejarse en otro.
La elección explícita del estándar C++ en un compilador también es importante:
Un compilador con una determinada versión del compilador por defecto suele tener un determinado estándar de C++. (Cuál puede encontrarse en el documento o en línea). Sin embargo, este no es necesariamente el estándar C++ compatible más reciente.
La elección explícita del estándar C++ se puede hacer con un argumento de línea de comando:
-std= (y probablemente también compiladores de otros proveedores)/std: . Por ejemplo g++ -std=c++14 llama a G++ forzado al estándar C++14.
Es un poco triste que este argumento de la línea de comando no sea literalmente idéntico para todos los compiladores/proveedores. Por lo tanto, es más conveniente definir el estándar C++ requerido en la herramienta construida que se utiliza. (La herramienta construida se encargará de elegir el argumento de línea de comando apropiado dependiendo del compilador encontrado/usado).
Para CMake (que uso en el trabajo diario), esto es
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF)(Para los casos de esquina, es posible que se requieran configuraciones adicionales, ya que una vez descubrí dolorosamente: SO: Puntero a la variable miembro como miembro estático ).
OP usa yarn , es cierto que nunca antes había oído hablar de él.
Informó que yarn install -std=c++17 resolvió su problema. (Traté de encontrar algún tipo de documento para esto en línea, pero fallé).
Aquí hay una manera fácil de resolver esto que le permite seguir usando el nodo 16.
yarn.lockpackage.json y asegúrese de usar la versión 5.4.3 de webpacker (que es la última versión; no extraerá la versión anterior de node-sass que causa este problema)yarn installAquí está la respuesta anterior, mucho más larga (en caso de que todavía sea útil):
Para evitar esto, descargue el nodo (por ejemplo , a la versión 14 ) hasta que node-sass sea compatible con v16. Para degradar el nodo usando nvm, simplemente ejecute:
nvm install 14Establezca la versión 14 globalmente (para que cada nueva ventana de terminal tenga por defecto la versión 14 del nodo) ejecutando :
nvm alias default 14¡Ahora tiene el nodo 14 instalado y configurado como predeterminado! ..ahora solo necesita hacer que su aplicación use v14.
Instale el nodo 14 (ver arriba). Abra la terminal y diríjase al directorio raíz de su aplicación, luego:
node --version devuelva 14.x (no 16)spring stopyarn.lockrm -rf node_modulesnode --version devuelva 14. Si no ejecuta nvm install 14 nuevamente.yarn install (si no tiene yarn para el nodo 14, instálelo con npm install --global yarn )Si tiene este problema específicamente en heroku , intente también asegurarse de que su webpacker esté actualizado :
yarn upgrade @rails/webpacker --latestTal vez no sea una respuesta directa a este problema, pero me encontré con esta pregunta mientras depuraba compilaciones fallidas en TravisCI y me hizo presionar bastantes confirmaciones para solucionarlo. Para mí fue causado porel hecho de que Node 16 fue lanzado hace unos días. Me di cuenta de que estaba usando el nvm install node en before_script, que siempre tiene el valor predeterminado más reciente, en lugar de la nvm install que en realidad se adhiere a la versión especificada en .nvmrc . Si bien usar una versión anterior de algo no es una solución a largo plazo; yarn install -std=c++14 ya me falló en esa misma línea.
Similar a @murb, ejecuté una actualización de preparación el otro día en mi cuadro de compilación y noté que el nodo 16 estaba instalado. Soltarlo de nuevo en el nodo 12 me solucionó el problema hasta que pueda actualizar todo mi sistema de compilación para que funcione correctamente con una versión más nueva de node.
Actualización : desde la versión 6.0.1 de node-sass, se admite Node 16. Actualizar node-sass a una versión superior a 6.0.1 resuelve este problema.
Lo que está viendo es un error durante la compilación de node-sass. Ese es un paquete que procesa sus estilos Sass/SCSS, que está escrito en C++ y solo se vuelve a empaquetar como una biblioteca de JavaScript. El hecho de que esté escrito en C++ significa que debe compilarse en su dispositivo durante la instalación (esto lo hace internamente una herramienta llamada node-gyp, que también puede detectar en su salida de error).
El problema es que node-sass no es compatible con Node 16 al momento de escribir esta respuesta, vea el problema de seguimiento: https://github.com/sass/node-sass/issues/3077 No hay una estimación de cuándo lo admitirá (y eso es justo, ya que es un proyecto impulsado por voluntarios). Incluso si logra instalar node-sass en Node 16, le desaconsejo, ya que el comportamiento podría no estar definido.
La solución correcta es degradar su instalación de Node a una versión compatible (puedo ver tanto 14 como 15 probados en su CI). Si git clonó un proyecto y no se instalará en su máquina, pero funciona para sus colegas o en el servidor de producción, es probable que el proyecto también tenga en mente una versión diferente de Node, y no se prueba en Node 16, así que recomendaría no desarrollarlo en el Nodo 16 de todos modos. Si el proyecto funcionó para usted hace unos días, pero no funciona ahora, es muy probable que haya actualizado recientemente la configuración de su sistema (por ejemplo, Homebrew), que lo actualizó a Node 16 (esto es lo que me pasó a mí y cómo encontré esta pregunta).
Debe consultar con los autores del proyecto cuál es la versión del servidor de producción de Node en la que se ejecuta e instalar esa versión localmente también. Como práctica recomendada, en el futuro, mantenga sincronizadas la versión de producción y su versión local de Node (y yarn o npm). Para administrar múltiples versiones de nodos, puede usar esta herramienta https://github.com/nvm-sh/nvm
Actualice a node-sass@6, que agregó soporte para Node 16 , lanzado recientemente
Tuve el mismo problema con el Nodo 16. La degradación al Nodo 14 funcionó bien para mí. Aquí hay pasos simples sobre cómo puede hacer lo mismo (usando Homebrew):
Verifique la versión actual de su nodo
node -vComprobar las versiones de nodos disponibles
brew search nodePara desvincularse de la versión actual
brew unlink nodeInstale la versión que desee usando el siguiente comando (por ejemplo, para la versión 14)
brew install node@14Vincularlo a la versión instalada
brew link node@14Al final, solo asegúrese de tener la versión correcta instalada usando el comando del primer paso.
Prueba esto:
export CXXFLAGS="--std=c++17" && npm installMismo problema, esto lo soluciona para mí:
CXXFLAGS="--std=c++17" yarn installRecibí este error mientras construía node-sass .
/Users/shahwarkhalid/.node-gyp/16.6.1/include/node/v8-internal.h:488:38: error: no template named 'remove_cv_t' in namespace 'std'; did you mean 'remove_cv'?
Este truco resolvió mi problema:
cd /Users/shahwarkhalid/.node-gyp/16.6.1/include/node/
abra el archivo v8-internal.h en un editor.
cambie remove_cv_t a remove_cv en la línea 488.
yarn install de nuevo y el problema se resolvió.