错误:无法找到模块“node-sass”

294

配置信息:macOS High Sierra,版本号10.13.2,node版本为v8.1.2,npm版本为5.0.3。 当我在我的AngularJS项目中运行npm start时,出现了如下错误:

ERROR in Cannot find module 'node-sass'

接着我执行:

npm i node-sass

现在我遇到了这个错误:

gyp: No Xcode or CLT version detected!
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1

为什么npm不能安装node-sass?我该如何安装node-sass?


39
运行npm install --save-dev node-sass - Ashok R
34个回答

541

这是解决方案:

sudo npm install --save-dev  --unsafe-perm node-sass

享受吧!

编辑以解释选项(来自评论):

--save-dev用于让您的应用程序能够在本地node_modules中找到模块。--save-dev将包添加到package.json中的devDependencies中。--unsafe--perm用于以root身份运行安装脚本。为了避免sudo,请使用nvm。实际上不需要--unsafe--perm,因为已经提到了sudo。因此,该命令基本上是将脚本密封以无论如何都要安装node-sass。


41
这个方法有效,但如果有人能够在回答中解释为什么这个方法有效,而简单的“npm install node-sass”却无效,那将是有益的。 - Be Kind To New Users
24
我只需要在开发依赖项中安装node-sass,命令为npm install --save-dev node-sass - Subhash Diwakar
3
这对我有用。当我安装 node 12(因为我在 Angular 8 中开始了一个新的 angular 项目)后,我开始遇到这个问题。我的 Angular 6 应用程序将不再构建,并抛出与 node-sass 相关的错误。问题已全部解决 :) - punkologist
2
我仍然不清楚这个解决方案为什么或者如何工作。添加到“devDependencies”中如何解决问题?在部署时它不会引起问题吗?顺便说一下:我对Angular和前端编程非常陌生。任何清晰的解释都将非常有用!非常感谢! - Amogh Natu
2
只需运行 npm install node-sass 即可安装 node-sass 模块。添加 --save-dev 还会将依赖项添加到 package.json 中。添加 --unsafe-perm 允许 npm 直接将 node-sass 二进制文件(被认为是不安全的)下载到您的项目中。 - Irman Ahmad
显示剩余6条评论

115
  1. 这个错误是因为没有安装 node-sass 所导致的...要解决这个问题,您只需要运行以下命令

npm install node-sass


47
在devDependencies中添加npm install --save-dev node-sass - Ashok R
7
没什么帮助。我已经安装了十几次node-sass(这不容易),但它仍然失败。Node-sass显然是个问题。 - mcv
2
@AshokR,您能否详细解释一下为什么将其添加为devDependencies可以解决问题?它在部署到生产环境时如何不会失败? - Amogh Natu

43
根据node-sass的github页面,支持的node.js版本会随着每个版本的发布而有所不同。

https://github.com/sass/node-sass

enter image description here

示例:检查您正在运行的 Node 版本。

node -v
-> v12.0.0

你需要安装node-sass v4.12+,这样你就可以{{做某些事情}}。

npm install node-sass@4.12.0

或者如果4.12.0是最新版本

npm install node-sass@latest

(npm install node-sass通常会安装最新版本,但请记住,如果package.json中的依赖项写成^3.0.0、~4.11.0之类的格式,则不总是安装最新版本(在此示例中为4.12.0)。) 在package.json中,波浪号(~)和插入符(^)有什么区别?

最后,使用sudo安装npm不是一个好习惯。请参考这篇文章。 https://medium.com/@ExplosionPills/dont-use-sudo-with-npm-still-66e609f5f92


1
这个解决方案对我很有效...我使用的是旧的2010年版MacBook,OSX 10.12,并且按照这里描述的匹配node-sass版本的方法解决了它。 - Theuns Alberts
"npm install node-sass@4.12.0" - 解决了我的问题 - 谢谢 - gavgrif
npm install node-sass@4.12.0 对我来说有效。 - Kairat Koibagarov
这是唯一对我有效的解决方案(安装正确的版本)。 - RayLoveless

28

尝试执行 npm uninstall node-sass 再执行 npm i node-sass 无法解决问题。

我使用的解决方案是 npm install --save-dev node-sass

愉快编码!


23

运行:

npm rebuild node-sass --force              

它将正常工作。


3
很遗憾,对我来说(在Windows上),它无法正常工作。 - mcv
1
谢谢你,我没有意识到node-sass需要一些Python,但重建错误消息让这一点非常清楚。 - Samuel Charpentier
Sass 不需要 Python,而是 Node-gyp 需要 Python,在大多数情况下会失败。 - Janatbek Orozaly

7

node-sass未被安装,这可能是许多原因之一。

您没有安装它。

npm install node-sass --save-dev

您遇到了权限错误。
sudo npm install --save-dev  --unsafe-perm node-sass

你遇到了内存问题,因为它尝试在您的平台上构建C代码,这适用于某些平台和Node版本。

node --max_old_space_size=8000 $(which npm) install node-sass --save-dev

您的Node和npm版本不兼容,这很可能导致构建过程失败。

在这种情况下,请使用n或nvm来确保新环境与旧环境具有相同的版本,即原始环境中成功运行的版本,因为在不同的环境中使用不同的版本通常会导致问题。


7

对我来说它起作用了...

sudo npm rebuild node-sass --force

4
请给出一些解释,以便更容易理解解决方案。 - Harsha Biyani

6
这是我的解决方法。我首先卸载了node-sass,然后重新安装它。
npm uninstall node-sass npm install --save-dev node-sass

5
在我的情况下,我还必须执行以下操作:
npm install sass-loader

为了解决这个问题

5

我不能成功运行它,因为我使用了最新版本的node(12.7.0),所以我必须明确地安装最新版本的node-sass

npm install node-sass@4.12.0


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