Sass-loader 需要 node-sass >=4 即使存在

Posted

技术标签:

【中文标题】Sass-loader 需要 node-sass >=4 即使存在【英文标题】:Sass-loader requires node-sass >=4 even if that exist 【发布时间】:2018-10-17 00:43:14 【问题描述】:

我对 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 

和第二种方法: 我删除了本地节点模块和 %User%\AppData\Roaming\npm-cache。然后我删除了锁定文件并执行了 npm

npm cache clear --force
npm install

但还是没有成功。

我错过了什么?

【问题讨论】:

sass-loader 是 angular 的依赖,所以不需要在 package.json 中指定。尝试从 json 中删除 node-sasssass-loader,清除所有内容,安装并构建。 使用node 10.0.0 时遇到同样的问题...我现在再次降级为node 9.11.1,现在它可以工作...不知道可能是什么原因...。 遇到了同样的问题。我可以看到您已经进行了重建,但请尝试重建所有内容:npm rebuild --force。这为我解决了问题。 @Sebastian Hildebrandt 我正在考虑从节点 10 降级到节点 9.11。之后我是否必须安装任何其他模块?升级到 Window 10 后,我的应用程序停止工作并收到相同的错误(模块构建失败:错误:sass-loader 需要 node-sass >=4。)安装此程序后,安装 Python 2 并设置 PATH 时出现错误。我安装了 Python 3.x。现在我必须降级到 Python 2 吗?我的设置:Angular CLI:6.2.1 / 节点:10.0.0 / 操作系统:win32 x64 【参考方案1】:

我有同样的问题,我使用以下步骤解决了:

    删除package-lock.json文件。 转到node_module 文件夹并运行rm -rf node_modules。 运行npm install

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

希望对你有帮助。

【讨论】:

对我不起作用。但 DarkNeuron 的提示对我有用。 这个问题发生在我在 CI 服务器上完全干净安装的情况下。 可能需要 'npm rebuild node-sass' 作为第 4 步。删除 package-lock.json 和 node_modules 会导致拉取新版本的 node-sass。但是,这个新版本在执行简单的“npm install”时有时无法构建 vendor.js。 'npm rebuild node-sass' 构建 vendor.js。无需重建一切。【参考方案2】:
npm rebuild --force

也有帮助

【讨论】:

稍微解释一下命令的作用 这样做解决了我的问题,将现有的:"node-sass": "^4.6.0" 更新为:"node-sass": "^4.12.0"。感谢分享!【参考方案3】:

我修复了它

npm install node-sass

在项目文件夹中,对于项目,因为全局安装它(使用-g 选项)并没有解决问题。

【讨论】:

【参考方案4】:

要解决您的问题,请运行此命令

npm install --unsafe-perm

【讨论】:

【参考方案5】:

以下步骤解决了这个问题

    删除\Users\&lt;user_id&gt;\AppData\Roaming\npm-cache 中的node-saas 文件夹 删除&lt;application_folder&gt;/node_modules 中的node-saas 文件夹 从&lt;application_folder&gt; 运行npm install

【讨论】:

【参考方案6】:

只需运行此代码...

npm install --save node-sass

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:

您可以按照以下步骤操作:

首先删除package-lock.json文件和node_modules。 然后运行npm install package-lock.json 文件将使用新的依赖版本自动更新。

【讨论】:

【参考方案9】:

可能是版本不匹配。要安装工作的 node-sass 版本,您可以使用

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

您可以根据下表选择您的版本号,以及您安装的节点版本,您可以通过node --version查看

你可以找到完整的信息here

这解决了我的问题

【讨论】:

以上是关于Sass-loader 需要 node-sass >=4 即使存在的主要内容,如果未能解决你的问题,请参考以下文章

八、sass-loader的使用 ------ 2019-04-23

Asp.Net Core 中 webpack 上的 sass-loader

Asp.Net Core 中 webpack 上的 sass-loader

[解决]TypeError: this.getOptions is not a function

Webpack:在 sass-loader、css-loader 上重复导入(模块:true)

无法使用 `sass-loader` 内联样式