运行npm安装时出现node-sass错误

34
每当我在一个vue.js项目上运行npm install时,都会收到以下错误:
5769 error code 1
5770 error path /*my path*/node_modules/node-sass
5771 error command failed
5772 error command sh -c node scripts/install.js
5773 error /*my path*/node_modules/request/index.js:30
5773 error   if (options !== null && typeof op
5773 error
5773 error
5773 error SyntaxError: Unexpected end of input
5773 error     at Object.compileFunction (node:vm:352:18)
5773 error     at wrapSafe (node:internal/modules/cjs/loader:1031:15)
5773 error     at Module._compile (node:internal/modules/cjs/loader:1065:27)
5773 error     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
5773 error     at Module.load (node:internal/modules/cjs/loader:981:32)
5773 error     at Function.Module._load (node:internal/modules/cjs/loader:822:12)
5773 error     at Module.require (node:internal/modules/cjs/loader:1005:19)
5773 error     at require (node:internal/modules/cjs/helpers:102:18)
5773 error     at Object.<anonymous> (/*my path*/node_modules/node-sass/scripts/install.js:10:13)
5773 error     at Module._compile (node:internal/modules/cjs/loader:1101:14)
5774 verbose exit 1

我尝试重新安装node和npm,但它总是在node-sass上停止。 npm install 在我所有的laravel项目中都能正常运行。这只发生在我最近拉取的两个项目上,几乎全部使用Vue.js和typescript,所以我不确定是否可能是问题所在。
编辑:我尝试删除本地版本,从github拉取并再次运行npm install,结果出现了这个错误。它是一个庞大的错误,所以我不得不删除一大块内容才能将其放入帖子中。
2863 error code 1
2864 error path /*my path*/node_modules/node-sass
2865 error command failed
2866 error command sh -c node scripts/build.js
2867 error Building: /opt/homebrew/Cellar/node/16.10.0/bin/node /Users/scott/Dev/KPro/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
2867 error   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_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DLIBSASS_VERSION="3.5.5"' -I/Users/scott/.node-gyp/16.10.0/include/node -I/Users/scott/.node-gyp/16.10.0/src -I/Users/scott/.node-gyp/16.10.0/deps/openssl/config -I/Users/scott/.node-gyp/16.10.0/deps/openssl/openssl/include -I/Users/scott/.node-gyp/16.10.0/deps/uv/include -I/Users/scott/.node-gyp/16.10.0/deps/zlib -I/Users/scott/.node-gyp/16.10.0/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/ast.o.d.raw   -c -o Release/obj.target/libsass/src/libsass/src/ast.o ../src/libsass/src/ast.cpp
2867 error   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_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DLIBSASS_VERSION="3.5.5"' -I/Users/scott/.node-gyp/16.10.0/include/node -I/Users/scott/.node-gyp/16.10.0/src -I/Users/scott/.node-gyp/16.10.0/deps/openssl/config -I/Users/scott/.node-gyp/16.10.0/deps/openssl/openssl/include -I/Users/scott/.node-gyp/16.10.0/deps/uv/include -I/Users/scott/.node-gyp/16.10.0/deps/zlib -I/Users/scott/.node-gyp/16.10.0/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/ast_fwd_decl.o.d.raw   -c -o Release/obj.target/libsass/src/libsass/src/ast_fwd_decl.o ../src/libsass/src/ast_fwd_decl.cpp

2868 error gyp info it worked if it ends with ok
2868 error gyp verb cli [
2868 error gyp verb cli   '/opt/homebrew/Cellar/node/16.10.0/bin/node',
2868 error gyp verb cli   '/*my path*/node_modules/node-gyp/bin/node-gyp.js',
2868 error gyp verb cli   'rebuild',
2868 error gyp verb cli   '--verbose',
2868 error gyp verb cli   '--libsass_ext=',
2868 error gyp verb cli   '--libsass_cflags=',
2868 error gyp verb cli   '--libsass_ldflags=',
2868 error gyp verb cli   '--libsass_library='
2868 error gyp verb cli ]
2868 error gyp info using node-gyp@3.8.0
2868 error gyp info using node@16.10.0 | darwin | arm64
2868 error gyp verb command rebuild []
2868 error gyp verb command clean []
2868 error gyp verb clean removing "build" directory
2868 error gyp verb command configure []
2868 error gyp verb check python checking for Python executable "python2" in the PATH
2868 error gyp verb `which` succeeded python2 /usr/bin/python2
2868 error gyp verb check python version `/usr/bin/python2 -c "import sys; print "2.7.16
2868 error gyp verb check python version .%s.%s" % sys.version_info[:3];"` returned: %j
2868 error gyp verb get node dir no --target version specified, falling back to host node version: 16.10.0
2868 error gyp verb command install [ '16.10.0' ]
2868 error gyp verb install input version string "16.10.0"
2868 error gyp verb install installing version: 16.10.0
2868 error gyp verb install --ensure was passed, so won't reinstall if already installed
2868 error gyp verb install version is already installed, need to check "installVersion"
2868 error gyp verb got "installVersion" 9
2868 error gyp verb needs "installVersion" 9
2868 error gyp verb install version is good
2868 error gyp verb get node dir target node version installed: 16.10.0
2868 error gyp verb build dir attempting to create "build" dir: /Users/scott/Dev/KPro/node_modules/node-sass/build
2868 error gyp verb build dir "build" dir needed to be created? /Users/scott/Dev/KPro/node_modules/node-sass/build
2868 error gyp verb build/config.gypi creating config file
2868 error gyp verb build/config.gypi writing out config file: /*my path*/node_modules/node-sass/build/config.gypi
2868 error (node:57324) [DEP0150] DeprecationWarning: Setting process.config is deprecated. In the future the property will be read-only.
2868 error (Use `node --trace-deprecation ...` to show where the warning was created)
2868 error gyp verb config.gypi checking for gypi file: /*my path*/node_modules/node-sass/config.gypi
2868 error gyp verb common.gypi checking for gypi file: /*my path*/node_modules/node-sass/common.gypi
2868 error gyp verb gyp gyp format was not specified; forcing "make"
2868 error gyp info spawn /usr/bin/python2
2868 error gyp info spawn args [
2868 error gyp info spawn args   '/*my path*/node_modules/node-gyp/gyp/gyp_main.py',
2868 error gyp info spawn args   'binding.gyp',
2868 error gyp info spawn args   '-f',
2868 error gyp info spawn args   'make',
2868 error gyp info spawn args   '-I',
2868 error gyp info spawn args   '/*my path*/node_modules/node-sass/build/config.gypi',
2868 error gyp info spawn args   '-I',
2868 error gyp info spawn args   '/*my path*/node_modules/node-gyp/addon.gypi',
2868 error gyp info spawn args   '-I',
2868 error gyp info spawn args   '/Users/scott/.node-gyp/16.10.0/include/node/common.gypi',
2868 error gyp info spawn args   '-Dlibrary=shared_library',
2868 error gyp info spawn args   '-Dvisibility=default',
2868 error gyp info spawn args   '-Dnode_root_dir=/Users/scott/.node-gyp/16.10.0',
2868 error gyp info spawn args   '-Dnode_gyp_dir=/Users/scott/Dev/KPro/node_modules/node-gyp',
2868 error gyp info spawn args   '-Dnode_lib_file=/Users/scott/.node-gyp/16.10.0/<(target_arch)/node.lib',
2868 error gyp info spawn args   '-Dmodule_root_dir=/*my path*/node_modules/node-sass',
2868 error gyp info spawn args   '-Dnode_engine=v8',
2868 error gyp info spawn args   '--depth=.',
2868 error gyp info spawn args   '--no-parallel',
2868 error gyp info spawn args   '--generator-output',
2868 error gyp info spawn args   'build',
2868 error gyp info spawn args   '-Goutput_dir=.'
2868 error gyp info spawn args ]
2868 error gyp verb command build []
2868 error gyp verb build type Release
2868 error gyp verb architecture arm64
2868 error gyp verb node dev dir /Users/scott/.node-gyp/16.10.0
2868 error gyp verb `which` succeeded for `make` /usr/bin/make
2868 error gyp info spawn make
2868 error gyp info spawn args [ 'V=1', 'BUILDTYPE=Release', '-C', 'build' ]

2868 error 2 warnings generated.
2868 error In file included from ../src/libsass/src/ast_fwd_decl.cpp:1:
2868 error ../src/libsass/src/ast.hpp:1614:25: warning: loop variable 'numerator' creates a copy from type 'const std::__1::basic_string<char>' [-Wrange-loop-construct]
2868 error         for (const auto numerator : numerators)
2868 error                         ^
2868 error ../src/libsass/src/ast.hpp:1614:14: note: use reference type 'const std::__1::basic_string<char> &' to prevent copying
2868 error         for (const auto numerator : numerators)
2868 error              ^~~~~~~~~~~~~~~~~~~~~~
2868 error                         &
2868 error ../src/libsass/src/ast.hpp:1616:25: warning: loop variable 'denominator' creates a copy from type 'const std::__1::basic_string<char>' [-Wrange-loop-construct]
2868 error         for (const auto denominator : denominators)
2868 error                         ^
2868 error ../src/libsass/src/ast.hpp:1616:14: note: use reference type 'const std::__1::basic_string<char> &' to prevent copying
2868 error         for (const auto denominator : denominators)
2868 error              ^~~~~~~~~~~~~~~~~~~~~~~~



2868 error                                      remove_cv
2868 error /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/type_traits:776:50: note: 'remove_cv' declared here
2868 error template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_cv
2868 error                                                  ^
2868 error 1 error generated.
2868 error make: *** [Release/obj.target/binding/src/binding.o] Error 1
2868 error gyp ERR! build error
2868 error gyp ERR! stack Error: `make` failed with exit code: 2
2868 error gyp ERR! stack     at ChildProcess.onExit (/*my path*/node_modules/node-gyp/lib/build.js:262:23)
2868 error gyp ERR! stack     at ChildProcess.emit (node:events:390:28)
2868 error gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)
2868 error gyp ERR! System Darwin 20.6.0
2868 error gyp ERR! command "/opt/homebrew/Cellar/node/16.10.0/bin/node" "/*my path*/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
2868 error gyp ERR! cwd /*my path*/node_modules/node-sass
2868 error gyp ERR! node -v v16.10.0
2868 error gyp ERR! node-gyp -v v3.8.0
2868 error gyp ERR! not ok
2868 error Build failed with error code: 1
2869 verbose exit 1

1
你可以尝试运行 npm cache clean --force 命令。这个命令解决了我的问题。 - Karma Blackshaw
也尝试一下 npm rebuild node-sass - Harshit Rastogi
@KarmaBlackshaw,很遗憾,那个没什么运气。 - Scott Dunn
有一个 package-lock.json 文件吗?你可以尝试将其删除吗? - Karma Blackshaw
这些错误可能是由于node-sass和您的nodejs版本不兼容引起的,请检查您的node_modules文件夹中的自述文件以查找node-sass的兼容性。 - buncis
10个回答

57

node-sass 已被弃用。

现在已转换为npm包sass

您可以卸载旧的并安装新的。

npm uninstall node-sass

npm install sass

通过此次更新,许多问题,包括安装过程中的问题都得以解决。




2
最佳答案 - 我在每个项目中都对node-sass的繁琐安装过程感到沮丧。npm install sass正如预期的那样工作,并且速度更快! - Steven X
当我在按照教程安装时,将“npm i node-sass”错误地安装到后端时,它可以正常工作,但是在安装到前端时却给了我错误。虽然使用新版本不会影响我,但我认为这很奇怪,并且文档似乎表明它应该在不久的将来仍然可以工作。这可能会引起很多混乱。 - Laz Austin

21
如果您使用的是Node 16,请将node-sass更改为版本>=6.0.1,然后通过npm i重新安装依赖项可能会解决您的问题。请参见跟踪问题https://github.com/sass/node-sass/issues/3077。 如果失败,您可能需要:
rm -rf node_modules package-lock.json 
npm cache clean --force
npm i

谢谢!这是唯一一个在我的M1机器上有效的解决方案。 - Ye' Thura Ag
谢谢。升级了npm i -g node-sass@6.0.1包,它像魔法一样运行良好。 后来更改了它,因为node-sass不受支持且存在大量问题,所以使用了npm uninstall node-sass并执行了npm install sass。 - Kimi Raikkonen 9790

4
如果您仍在解决此问题 2022年11月 以构建Sitecore Habitat用于演示/参考,回答如下:
  1. 将您的Node JS降级到12.22.12。超过此版本,您将遇到上述相同的错误。
  2. 这将允许您在您的habitat解决方案中看到node_modules文件夹。
  3. 然后你会遇到'gulp'的另一个错误。
只需按照这些步骤进行操作。我使用的是Windows 10,对我来说完美地工作了!
在与package.json文件相同的目录中创建一个名为npm-shrinkwrap.json的文件,并添加以下内容:
{
  "dependencies": {
    "graceful-fs": {
        "version": "4.2.2"
     }
  }
}

运行npm install命令,并不用担心,它会更新npm-shrinkwrap.json的许多内容。
运行gulp命令启动项目。
如果你有额外时间,也值得使用nvm尝试其他版本。我使用的一些命令如下。

https://github.com/coreybutler/nvm-windows/releases/tag/1.1.10

https://github.com/nvm-sh/nvm#installing-and-updating

nvm install 12.22.12
nvm use 12.22.12
node -v

npm install -g gulp
npm install
npm uninstall -g gulp
npm uninstall
gulp -v

4

天啊,在经历了一整天的尝试和错误之后,这就是拯救我的东西!非常非常感谢你!!!!!!!!!! - raphjutras

1

检查package.json文件中node-sass插件的版本。在我的情况下,它是4.10.0,根据这个版本的发布文档,它支持node版本11,而我的是16。因此,您可以更新插件版本以使其与node 16兼容,或者降级您的node版本,以使其与插件版本兼容。


1
请确保您的“devDependencies”(或“dependencies”)中的“sass-loader”不是旧版本。对我而言,我必须卸载“sass-loader”(一个旧版本),然后安装“node-sass”,最后再安装“sass-loader”(不强制任何版本)。请注意保留HTML标签。

0

对我来说,所有这些都不起作用,唯一有用的就是使用早期版本的npm。

sudo npm install -g n
sudo n 12
npm install

显然,我尝试安装的资产版本太旧,无法与当前版本的npm一起使用,因此降级到较早的版本就足以成功安装。

现在我可以开始升级到最新版本。


0
没有一个方法对我有效,唯一有效的是使用早期版本的npm进行安装。 sudo npm install -g n sudo n 12 npm install 显然,我尝试安装的资源版本太旧,无法与当前版本的npm一起工作,因此降级到早期版本就足以成功安装。 现在我可以开始升级到最新版本。
sudo npm uninstall -g npm

由于当前的npm可能无法与旧版本的node兼容,因此请重新安装npm

sudo npm install -g npm

0
对于上述错误:
步骤1:您需要安装Python 3。
步骤2:删除package-lock.json文件。
步骤3:如果您使用的是18以上的Node版本,请将node-sass版本更改为"v9.0.0"。
步骤4:然后执行npm install
这对我来说完美地解决了问题。

0
我有同样的问题。而且,在我的情况下,node-sass是另一个依赖包中的。所以我不能直接删除它。
这个解决方案对我来说很有效:
  1. 如果尚未安装,请使用yarn add -D sass安装sass。
  2. 在项目根目录下创建一个名为dependency-stub的文件夹,其中包含一个名为index.js的单个文件,其中包含一行module.exports = {};(这是我们将使用解析重定向到的存根)。
  • yarn 2 - 在包含{“name:“node-sass”,“version”:“0.0.0”}的目录中添加一个package.json文件
  • npm - 请参阅第3步下的注意事项。
  1. 在package.json的resolutions(或overrides,如果使用NPM)部分中添加“node-sass”:“file:dependency-stub”。
  • npm - 使用overrides部分而不是resolutions,并且由于npm文件URL相对于当前依赖关系,您可以使用依赖关系存根的绝对路径(可能将其放在主目录中),存根模块的URL或存根模块的GitHub URL。
  1. 在tsconfig.json的include数组中添加“dependency-stub”(以防止ESLint引发有关文件不在项目中的错误)。
  2. npm - 假设dependency-stub不在项目目录中,则不需要此操作。

https://www.openweb.com/blog/preventing-node-sass-or-any-specific-dependency-from-installing


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接