use*_*745 76 xcode ruby-on-rails node.js node-sass yarnpkg
我的问题似乎与此问题类似,但它发生在我yarn install
在 Rails 应用程序中运行时。
当我运行时yarn install
,它成功运行了一段时间,然后
../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.o.d.raw -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
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?(我什至不确定 xcode/node/rails/c++ 是否有问题)
其他注意事项
/usr/bin/xcodebuild -version
返回Xcode 12.4
Build version 12D4e
Run Code Online (Sandbox Code Playgroud)
cpp --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
Run Code Online (Sandbox Code Playgroud)
请注意:我不在 cpp 中编码,所以我对如何解决的上下文知识知之甚少。
Uli*_*ses 87
同样的问题,这为我解决了:
CXXFLAGS="--std=c++17" yarn install
Run Code Online (Sandbox Code Playgroud)
Hon*_*rek 84
更新:从 node-sass 版本 6.0.1 开始,支持 Node 16。将 node-sass 更新到 6.0.1 以上的版本可以解决这个问题。
您看到的是 node-sass 编译期间的错误。这是一个处理你的 Sass/SCSS 样式的包,它是用 C++ 编写的,并且只重新打包为一个 JavaScript 库。它是用 C++ 编写的,这意味着它需要在安装期间在您的设备上编译(这是由一个名为 node-gyp 的工具在内部完成的,您也可以在错误输出中找到它)。
问题是 node-sass在撰写此答案时不支持 Node 16,请参阅跟踪问题:https : //github.com/sass/node-sass/issues/3077没有估计何时会支持它(和这是公平的,因为它是一个志愿者驱动的项目)。即使您设法在 Node 16 上安装 node-sass,我也建议您不要这样做,因为该行为可能未定义。
正确的解决方案是将您的 Node 安装降级到受支持的版本(我可以看到 14 和 15 在他们的 CI 中进行了测试)。如果您 git 克隆了一个项目并且它不会安装在您的机器上,但可以为您的同事或生产服务器工作,则该项目可能也考虑了不同版本的 Node,并且未在 Node 16 上进行测试,所以我建议不要在 Node 16 上开发它。如果该项目几天前对您有用,但现在不起作用,则很可能您最近升级了系统设置(例如 Homebrew),将您升级到 Node 16(这就是发生在我身上的事情以及我的方式发现这个问题)。
您应该与项目的作者核实它运行的 Node 的生产服务器版本是什么,并在本地安装该版本。作为最佳实践,将来保持生产版本和您本地版本的 Node(以及 yarn 或 npm)同步。要管理多个 Node 版本,可以使用此工具https://github.com/nvm-sh/nvm
use*_*745 43
明智的做法是将 node 降级(例如到版本 14),直到 node-sass 与 v16 兼容。要使用 nvm 降级节点,只需运行:
nvm install 14
Run Code Online (Sandbox Code Playgroud)
通过运行以下命令全局设置版本 14(因此每个新终端窗口默认为节点版本 14):
nvm alias default 14
Run Code Online (Sandbox Code Playgroud)
现在您已经安装了节点 14 并将其设置为默认值!..现在你只需要让你的应用程序使用 v14。
安装节点 14(见上文)。打开终端并前往您的应用程序的根目录,然后:
node --version
返回14.x
(不是 16)spring stop
yarn.lock
rm -rf node_modules
node --version
返回 14。如果它不再运行nvm install 14
。yarn install
(如果节点 14 没有纱线,请安装它npm install --global yarn
)shi*_*ovk 33
恢复到最新的 Node v14 LTS 以使用node-sass
:
brew install node@14
brew unlink node
brew link node@14
node -v
spring stop
Run Code Online (Sandbox Code Playgroud)
在您的 Rails 项目中运行:
yarn install
Run Code Online (Sandbox Code Playgroud)
PS:节点 16 有 node-sass 错误https://github.com/nodejs/node/issues/38367#issuecomment-825461899
小智 14
我在构建时遇到此错误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'?
这个黑客解决了我的问题:
cd /Users/shahwarkhalid/.node-gyp/16.6.1/include/node/
v8-internal.h
在编辑器中打开文件。
更改remove_cv_t
为remove_cv
第 488 行。
yarn install
再次,问题得到解决。
Red*_*ett 10
由于此问题的一些答案,已经发布了node-sass
( ) 的新版本,通过添加对节点 16 的支持来修复该问题。v6
就我而言,Rails 依赖于旧版本,因为我的( ) 中的node-sass
版本。将此答案更新到当前版本之后的版本,解决了该问题。@rails/webpacker
package.json
4.3.0
5.4.0
小智 8
我在 Node 16 上也遇到了同样的问题。降级到 Node 14 对我来说效果很好。以下是如何执行相同操作的简单步骤(使用 Homebrew):
检查您当前的节点版本
node -v
Run Code Online (Sandbox Code Playgroud)
检查可用的节点版本
brew search node
Run Code Online (Sandbox Code Playgroud)
取消与当前版本的链接
brew unlink node
Run Code Online (Sandbox Code Playgroud)
使用以下命令安装您想要的版本(例如版本 14)
brew install node@14
Run Code Online (Sandbox Code Playgroud)
将其链接到已安装的版本
brew link node@14
Run Code Online (Sandbox Code Playgroud)
最后,只需确保使用第一步中的命令安装了正确的版本即可。
小智 7
与@murb 类似,前几天我在构建盒上运行了 brew 更新,并注意到节点 16 已安装。将它放回节点 12 为我解决了这个问题,直到我可以更新我的整个构建系统以与较新版本的节点一起正常工作。
我试图查看我当前的版本,
cpp --version
它给出了Run Code Online (Sandbox Code Playgroud)cpp --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
编译器版本不是 C++ 标准版本。
前者是工具的版本,后者是C++标准的版本。
最近所有主要的 C++ 编译器(我知道)同时都支持多种 C++ 标准。
如果要开发可移植(符合标准)的代码,C++ 标准很重要——与特定的编译器无关。这允许为多个平台开发代码,由不同的编译器编译。它还有助于以更好的质量进行开发——代码中的弱点可能会在一个供应商的编译器中漏掉(即被容忍),而在另一个供应商的编译器中可能会被抱怨。
在编译器中明确选择 C++ 标准也很重要:
具有特定编译器版本的编译器通常默认为特定 C++ 标准。(可以在文档中或在线找到它。)然而,这不一定是最新支持的 C++ 标准。
可以使用命令行参数来明确选择 C++ 标准:
-std=
也可能是其他供应商的编译器)/std:
。例如g++ -std=c++14
调用强制为 C++14 标准的 G++。
有点遗憾的是,这个命令行参数对于所有编译器/供应商来说并不完全相同。因此,在使用的构建工具中定义所需的 C++ 标准更方便。(构建的工具将根据找到/使用的编译器注意选择适当的命令行参数。)
对于 CMake(我在日常工作中使用的),这是
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
Run Code Online (Sandbox Code Playgroud)
(对于极端情况,可能需要额外的设置,因为我曾经痛苦地发现:SO: Pointer to member variable as static member。)
OP 使用yarn,我承认以前从未听说过。
他报告说yarn install -std=c++17
解决了他的问题。(我试图在网上找到某种文档。但我失败了。)
归档时间: |
|
查看次数: |
19208 次 |
最近记录: |