Sass-loader需要node-sass >=4的版本,即使已存在其他版本。

23

我执行了升级到Angular 6的操作。在运行"ng serve -o"期间,我收到了sass-loader需要node-sass的错误提示。

运行"ng serve -o"后,我收到以下信息:

ERROR in ./src/sass/styles.scss (./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/sass-loader/lib/loader.js??ref--14-3!./src/sass/styles.scss)
    Module build failed: Error: `sass-loader` requires `node-sass` >=4. Please install a compatible version.
    at Object.sassLoader (node_modules\sass-loader\lib\loader.js:31:19)
ERROR in ./src/app/app.component.scss
Module build failed: Error: `sass-loader` requires `node-sass` >=4. Please install a compatible version.
    at Object.sassLoader (node_modules\sass-loader\lib\loader.js:31:19)
ERROR in x.component.scss
Module build failed: Error: `sass-loader` requires `node-sass` >=4. Please install a compatible version.
    at Object.sassLoader (\node_modules\sass-loader\lib\loader.js:31:19)
ERROR in x.component.scss
Module build failed: Error: `sass-loader` requires `node-sass` >=4. Please install a compatible version.
    at Object.sassLoader (loader.js:31:19)
ERROR in .x.component.scss
Module build failed: Error: `sass-loader` requires `node-sass` >=4. Please install a compatible version.
    at Object.sassLoader (node_modules\sass-loader\lib\loader.js:31:19)

显然,我会检查所有东西(在我看来),但我不知道发生了什么。

Package.Json:

"devDependencies": {
"@angular-devkit/build-angular": "~0.6.0",
"@angular/cli": "6.0.0",
"@angular/compiler-cli": "6.0.0",
"@angular/language-service": "6.0.0",
"@types/jasmine": "~2.8.3",
"@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.106",
"codelyzer": "^4.0.1",
"jasmine-core": "~2.8.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-html-detailed-reporter": "^1.1.21",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"karma-phantomjs-launcher": "^1.0.4",
"karma-teamcity-reporter": "^1.1.0",
"phantomjs-prebuilt": "^2.1.16",
"protractor": "~5.1.2",
"node-sass": "^4.9.0",
"sass-loader": "^7.0.1",
"ts-node": "~4.1.0",
"tslint": "~5.9.1",
"typescript": "2.7.2"
}

dir -l node_modules 表示:

...
05/07/2018  08:53 AM    <DIR>          node-sass
...
05/07/2018  08:53 AM    <DIR>          sass-loader
...

我执行了:

npm rebuild node-sass 

第二种方法:我一起删除了本地的node-module和%User%\AppData\Roaming\npm-cache。然后我删除了锁文件并执行了npm。

npm cache clear --force
npm install

但仍然没有成功。

我漏掉了什么?


sass-loader是Angular的一个依赖项,因此在package.json中不需要指定它。尝试从json中移除node-sasssass-loader,清除所有内容,然后安装和构建。 - Leon
1
使用 node 10.0.0 时遇到了同样的问题...我现在已经降级回 node 9.11.1,现在它可以工作了...不确定原因是什么.... - Sebastian Hildebrandt
6
我也遇到了相同的问题。我看到你已经尝试过重新构建,但是请尝试完全重新构建:npm rebuild --force。这对我有用。 - DarkNeuron
@Sebastian Hildebrandt 我正在考虑从Node 10降级到Node 9.11。在这之后,我需要安装其他模块吗?升级到Windows 10后,我的应用程序停止工作,并且出现相同的错误(Module build failed: Error:sass-loader requires node-sass >=4.)安装后,我得到了安装Python 2并设置PATH的错误提示。我已经安装了Python 3.x。现在我需要降级到Python 2吗?我的设置:Angular CLI:6.2.1 / Node:10.0.0 / OS:win32 x64 - aswininayak
9个回答

38
npm rebuild --force

也有帮助。


10
希望您能解释一下这个命令的作用。 - Jan B.
通过将现有的 "node-sass": "^4.6.0" 更新为 "node-sass": "^4.12.0",我解决了我的问题。感谢分享! - Devner

11

我用以下方法修复了它

npm install node-sass

在项目文件夹中操作,因为使用-g全局安装无法解决问题。


10

我曾遇到同样的问题,通过以下步骤解决:

  1. 删除 package-lock.json 文件。
  2. 进入 node_module 文件夹并运行 rm -rf node_modules 命令。
  3. 运行 npm install

package-lock.json 文件将自动更新为新的依赖版本。

希望能帮到您。


2
没用,但是 DarkNeuron 的提示对我有用。 - Razze
这个问题在我的 CI 服务器上进行了绝对干净的安装后出现。 - user9315861
3
第 4 步可能需要运行 'npm rebuild node-sass'。删除 package-lock.json 和 node_modules 后,会拉取新版本的 node-sass。但是,当执行普通的 'npm install' 时,这个新版本有时会无法构建 vendor.js。'npm rebuild node-sass' 可以构建 vendor.js,不需要重新构建所有内容。 - Maksym
我收到了“'rm' 不是内部或外部命令,也不是可运行的程序或批处理文件。”的错误信息。 - David Klempfner
我没有一个node-module文件夹,只有一个带有“s”的node_modules。 - David Klempfner

3

我用以下步骤解决了这个问题:

  1. 打开 package.json
  2. 添加你想要安装的 node-sass 版本,例如 "node-sass": "^4.12.0"
  3. 在命令行界面(CLI)中运行安装命令:npm install node-sass
  4. 问题将得到解决。

2

只需运行以下代码...

npm install --save node-sass

1

为解决您的问题,请运行以下命令:

npm install --unsafe-perm


0

按照以下步骤解决此问题

  1. 删除 \Users\<user_id>\AppData\Roaming\npm-cache 中的 node-saas 文件夹
  2. 删除 <application_folder>/node_modules 中的 node-saas 文件夹
  3. <application_folder> 运行 npm install

0

可能是版本不匹配的问题。如果要安装可工作的node-sass版本,您可以使用以下命令

npm uninstall node-sass
npm install node-sass@4.14.0

你可以根据以下表格和你已安装的 Node 版本(可通过 node --version 命令检查)来选择你的版本号。

node-sass compatibility table

你可以在这里找到完整的信息

这解决了我的问题


-1
你可以按照以下步骤操作:
首先删除 package-lock.json 文件和 node_modules 文件夹。 然后运行 npm install 命令。 这样,package-lock.json 文件会自动更新为新的依赖版本。

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