ERROR in找不到模块'node-sass'

bie*_*ier 118 node.js npm angularjs macos-high-sierra

配置:macOS High Sierra,版本10.13.2,节点:v8.1.2 npm:5.0.3当我在我的angularjs项目中运行npm start时出现此错误:

ERROR in Cannot find module 'node-sass'
Run Code Online (Sandbox Code Playgroud)

在此之后我运行:

npm i node-sass
Run Code Online (Sandbox Code Playgroud)

现在我收到这个错误:

gyp: No Xcode or CLT version detected!
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*zor 221

这是解决方案:

sudo npm install --save-dev  --unsafe-perm node-sass
Run Code Online (Sandbox Code Playgroud)

请享用!

  • 这行得通,但是如果有人可以补充为何行之有效的答案,而简单的`npm install node-sass'行不通,那将是有启发性的。 (9认同)
  • 我需要做的就是在** dev依赖**中安装node-sass'npm install --save-dev node-sass` (6认同)
  • @AlexOnozor这项工作如何? (2认同)
  • 这对我有用。我在安装节点12时开始遇到此问题(在Angular 8中启动新的angular项目)。我的angular 6应用程序将不再生成并抛出关于node-sass的错误。全部固定:) (2认同)
  • 我仍然不清楚这个解决方案为什么或如何工作。添加到“devDependencies”如何解决问题?部署时如何不会导致问题?旁注:我对 Angular 和前端编程非常陌生。任何明确的解释都会非常有用!非常感谢! (2认同)
  • @AmoghNatu 只需运行 `npm install node-sass` 就会安装 node-sass 模块。添加 `--save-dev` 也会将依赖项添加到 `package.json`。添加 `--unsafe-perm` 允许 npm 将 node-sass 二进制文件(被认为不安全)直接下载到您的项目中。 (2认同)
  • --save-dev用于使您的应用程序能够在本地node_modules中找到模块。--save-dev将软件包添加到package.json中的devDependencies。--unsafe--perm用于以root用户身份运行安装脚本。为了避免sudo,请改用nvm。--unsafe--真的不需要perm,因为已经提到了sudo。因此,该命令基本上是不惜一切代价来密封脚本以安装node-sass。 (2认同)

小智 76

  1. 此错误是针对node-sass不存在的...要解决此问题,只需要运行以下命令即可

npm install node-sass

  • 添加为devDependencies```npm install --save-dev node-sass```. (29认同)
  • 没有帮助.我已经安装了node-sass十几次(这并不容易),但它仍然失败了.Node-sass显然是个问题. (5认同)
  • @AshokR 你能详细说明为什么添加它作为 devDependencies 解决问题吗?部署到 prod 时它如何不会失败? (2认同)

ohk*_*s11 31

根据 node-sass github 页面,支持的 node.js 版本因版本而异。

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

在此处输入图片说明

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

node -v
-> v12.0.0
Run Code Online (Sandbox Code Playgroud)

你需要 node-sass v4.12+。这样你就可以

npm install node-sass@4.12.0
Run Code Online (Sandbox Code Playgroud)

或者如果 4.12.0 是最新的

npm install node-sass@latest
Run Code Online (Sandbox Code Playgroud)

npm install node-sass在很多情况下会安装最新版本,但请记住,如果 package.json 中的依赖项写成 ^3.0.0, ~4.11.0,它并不总是安装最新版本(在本例中为 4.12.0)有 什么区别在 package.json 中的波浪号(~)和插入符号(^)之间?

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


小智 17

跑:

npm rebuild node-sass --force              
Run Code Online (Sandbox Code Playgroud)

它会工作正常.

  • 可悲的是,它不能正常工作。对于我(在Windows上),问题仍然存在。 (2认同)

Ban*_*nta 8

这样做npm uninstall node-sass,然后npm i node-sass,不是为我工作。

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

快乐编码


小智 7

它对我有用...

sudo npm rebuild node-sass --force
Run Code Online (Sandbox Code Playgroud)

  • 给出一些解释,以便于理解解决方案 (4认同)

zar*_*ior 7

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

你还没有安装

npm install node-sass --save-dev
Run Code Online (Sandbox Code Playgroud)

您遇到权限错误

sudo npm install --save-dev  --unsafe-perm node-sass
Run Code Online (Sandbox Code Playgroud)

你有一个内存问题,因为它试图让它(从你平台中的 c 代码构建),这适用于某些平台和节点版本

node --max_old_space_size=8000 $(which npm) install node-sass --save-dev
Run Code Online (Sandbox Code Playgroud)

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

在这种情况下,使用 n 或 nvm 来确保您在新环境和原始环境中具有相同的版本,它确实可以工作,因为这通常是通过在不同的环境中使用不同的版本


Rob*_*Rob 5

就我而言,我还必须执行:

npm install sass-loader
Run Code Online (Sandbox Code Playgroud)

解决问题


And*_*ann 5

它对我来说失败了,因为我使用的是最新版本的节点(12.7.0),然后我必须显式安装最新版本node-sass

npm install node-sass@4.12.0


小智 5

这对我有用。我首先卸载 node-sass。然后装回去。

npm uninstall node-sass
npm install --save-dev node-sass