错误:/node_modules/node-sass:命令失败

280

我尝试在本地安装Vue Storefront,但运行"yarn install"命令时出现以下错误。我该如何解决这个错误?

error /var/www/html/vue-storefront/node_modules/node-sass: Command failed.
Exit code: 1
Command: node scripts/build.js
Arguments: 
Directory: /var/www/html/vue-storefront/node_modules/node-sass
Output:
Building: /usr/bin/node /var/www/html/vue-storefront/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp info it worked if it ends with ok
gyp verb cli [
gyp verb cli   '/usr/bin/node',
gyp verb cli   '/var/www/html/vue-storefront/node_modules/node-gyp/bin/node-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library='
gyp verb cli ]
gyp info using node-gyp@3.8.0
gyp info using node@13.9.0 | linux | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "/usr/bin/python3.6" in the PATH
gyp verb `which` succeeded /usr/bin/python3.6 /usr/bin/python3.6
gyp ERR! configure error 
gyp ERR! stack Error: Command failed: /usr/bin/python3.6 -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: invalid syntax
gyp ERR! stack 
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:303:12)
gyp ERR! stack     at ChildProcess.emit (events.js:321:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1026:16)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
gyp ERR! System Linux 4.15.0-88-generic
gyp ERR! command "/usr/bin/node" "/var/www/html/vue-storefront/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /var/www/html/vue-storefront/node_modules/node-sass
gyp ERR! node -v v13.9.0

15
由于此处使用了Python3,因此出现了失败的情况。在项目文件夹中创建一个.npmrc文件,其中包含python = "/usr/bin/python2.7",然后进行安装。根据链接显示,目前还不支持Python 3.x.x。 - NaceurBouhamed
3
你好 @NaceurBouhamed,我尝试了但它并没有起作用,仍然显示相同的错误。 - Adil
我在node alpine镜像上遇到了同样的问题,如果有帮助的话https://github.com/nodejs/docker-node/issues/282 - Mauricio
11
Node.js 是开发中最糟糕的技术之一 :D 起始项目总是手动修复依赖项的噩梦。 - Vasil Valchev
32个回答

364
我遇到了同样的问题,我通过以下步骤解决了它:
  1. 如果你使用的是苹果 M1 芯片,请使用 Rosetta 2 运行终端(可选,只有在你使用 Rosetta 安装了 Node 的情况下才需要)
  2. 检查你的 package.json 中的 node-sass 版本,并与下表进行比较:
NodeJS 支持的node-sass版本 Node模块
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
3. 使用以下命令检查您的Node版本:`node --version` 4. 根据您的`node-sass`安装相应的Nodejs版本,如果您使用NVM,请运行:`nvm use DESIRED_VERSION` 5. 删除旧的`node_modules`文件夹或在终端中输入以下命令:`rm -rf node_modules` 6. 运行:`npm install`
资源:

3
谢谢!你的建议很有帮助。我没有使用Rosetta,只是安装了兼容的Node.js版本,问题得以解决。 - Rahul Sahni
2
我正在运行Angular,并在package.json中更新我的node-sass到6.0.1以匹配我的node 16...这样做就解决了问题。 - Wellspring
4
谢谢!那是个好提示。我需要降级我的Node版本,然后就可以了。 - Diana
4
您可以使用 node --version 命令查看当前终端节点版本,并使用 nvm use 14 命令切换节点版本,以便使用正确的节点版本安装依赖项。请注意,这不会改变原始意思。 - wlarcheveque
1
谢谢Angelo!我将我的Node版本从17降级到13,现在它可以运行了。我会等到Rails 7发布的那一天,我们就可以摆脱Webpacker了!看起来node-sass不是唯一一个老旧的包。 - chmich
显示剩余10条评论

180

我也遇到了同样的问题,将node-sass版本升级到与node版本相同即可。使用yarn只需运行:

yarn add node-sass

这将升级版本并修复问题。


7
无法工作。出现了“Node.js Sass版本7.0.0与^4.0.0不兼容”的错误。需要执行以下操作:yarn remove node-sassyarn add sass - Christiaan Westerbeek
只需要运行 yarn add node-sass 就可以了,对我来说效果很好。谢谢。 - benmneb
这个方法对我很有效。我正在使用Ubuntu上的NodeJS ver.16.x构建VueJS应用程序。 - Arfeen
尝试了node-sasssass,都无法工作。 - DarkDead
@ChristiaanWesterbeek 的解决方案是我在 M1 Mac 上唯一有效的。 - Multitut

83

我正在运行 Rails 6,但由于某些原因它正在拉取 webpacker 4.3.0,而不是截至本篇文章发布时最新的 6.0.0 版本所需的 node-sass 4.3.0

以下方法适用于我:

  1. 删除 node_module 文件夹、package-lock.jsonyarn.lock 文件。
  2. 在我的 package.json 中,升级 rails/webpacker: 5.3.0
  3. 然后重新运行 yarn install
  4. 接着运行 yarn add node-sass

尝试了以上所有其他方法后,这个方法非常有效。

我相信这些就是确切的步骤,虽然说实话我已经尝试了很多方法都没成功,最终找到了这个方法,所以有可能我漏掉了某一步,但我已经尽力为未来的任何困扰者重现了这个过程。


10
我的情况下不需要进行第四步。 - gamecreature
对我没用。它显示:gyp ERR!cwd /Users/reinier/src/00_private/ror/reiniergarcia/node_modules/node-sass gyp ERR!node -v v16.3.0 gyp ERR!node-gyp -v v3.8.0 - Reinier Garcia
谢谢,这是让我的项目在 M1 Mac 上运行的最后一步! - mjdth
3
我所做的只是第二步,然后运行了 yarn 命令,这对我有效。 - John
2
仅仅执行步骤#2和#3就解决了我的问题。谢谢! - Tim
第二步解决我的问题!谢谢 - Saulo Santiago

47

尝试安装Sass而不是Node-sass。这对我很有效。

yarn remove node-sass
yarn add sass

这应该是第一选择。Node 18 是稳定的,因此在2023年之前降级到任何版本都存在安全风险。 以下是上述解决方案的更深入解释: [http://write.w5hnews.com/u/cwSNkeLNXf#Solved-ERR!gyp-info-using-node-gyp-3.8.0-gyp-verb-which-failed-Error-not-found-python2] - Lucas S.

27

如果这是一个Rails项目,升级webpacker就能解决问题。

yarn add @rails/webpacker

1
谢谢,这对我的Rails 6.x项目很有效。 - Arkan
1
这是对我有效的修复方法。我不知道有一个@rails/webpacker包。 - acolchagoff
1
升级到OSX 12.5后,我的Rails 5.2项目无法启动,终端显示了关于node-sass的错误,但是...尝试了这个解决方案修复了一切,为什么? - Chuyi Huang

19

只需升级yarn.lock文件中的sass版本。 对于node 14,node-sass的适当版本为4.14
因此,请根据您的node版本进行调整。


1
这在 Node 16 上实现不太好-我的 package.json 指定了 webpacker v4.3.0,其中包含 node-sass 作为依赖项。将 webpacker 更新为 5.3.0 对我来说是解决方案。 - bitfidget

15

我在 package.json 文件中将 Node 版本从 16.0 更改为 14.x,然后它就起作用了。


1
它对我也有效。我在想为什么16不起作用。 - Adarsh Pawar

10

这里提供的解决方案对我没有用处,直到我删除了node_modules文件夹和yarn.lock文件。

rm -rf node_modules
rm yarn.lock
yarn instal

在我的情况下,它是一个子依赖项,甚至没有列在package.json中。问题出现在yarn.lock / package-lock.json中。 当从github墓地中恢复项目时,这似乎是一个常见的问题。 - Alsushi

8
面对相同的问题。如果你查看错误堆栈,它会显示:
Error: Command failed: /usr/bin/python3.6 -c import sys; print "%s.%s.%s" % sys.version_info[:3];
   File "<string>", line 1
     import sys; print "%s.%s.%s" % sys.version_info[:3];
                                ^
 SyntaxError: invalid syntax

正在尝试使用Python2,但实际上使用的是不受支持的Python3。

当使用python命令调用时,我的系统运行Python3,因此我通过安装Python2并将其设置为python命令的别名来解决了这个问题:

alias python=pyhton2.7

嗨,你把上面的命令添加在哪里了?我也遇到了相同的错误 @RottenCandy - Akhila
1
@Akhila 在运行安装命令之前在 shell 中运行它,或者将其放在 .bashrc 或类似位置(如果您使用的是 Linux)。 - saud
1
你可以直接使用 npm config set python python2 - Felix Eve
在我的情况下,它正在寻找“python2”,而我没有安装它。安装了python2后,它直接工作了。 - Eli R.

7

我这里也遇到了同样的问题。我做了

nvm install 14  

因为我在package.json中使用的node-sass版本是4.14.1,所以这将显示 - 现在使用node v14.19.3 (npm v6.14.17),之后我进行了操作。

yarn install

并且它是成功的


嗨,这对我来说是答案。 - Jesus Cabrita

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