【问题标题】:'node-sass' usage is deprecated and will be removed in a future major version'node-sass' 的使用已被弃用,将在未来的主要版本中删除
【发布时间】:2021-04-12 02:26:55
【问题描述】:

当我从 Angular 8 升级到 11 时,我遇到了这个警告

'node-sass' 的用法已被弃用,并将在未来的主要版本中删除。选择退出已弃用的行为并开始使用 'sass' 卸载 'node-sass'。

谁能帮帮我
提前致谢

【问题讨论】:

标签: angular


【解决方案1】:

完整的错误信息是

'node-sass' usage is deprecated and will be removed in a future major version. To opt-out of the deprecated behaviour and start using 'sass' uninstall 'node-sass'.

所以,我认为您可以尝试的唯一解决方案是显而易见的,只需卸载 node-sass。

=> 我已经卸载它并尝试了ng serveng build --prod 一切正常。

仅供参考,作为开发人员,我一直觉得这个库node-sass 很头疼,因为它的不兼容错误。我很高兴我们不必再使用它并处理它令人痛苦的错误。

【讨论】:

  • 您在项目中使用 sass 吗?因为卸载 node-sass 而不做任何其他事情是不够的。
  • 是的先生,我在我的应用程序中使用 scss 文件,它工作正常。
  • 有趣,谢谢你的信息。这对我来说还不够。
  • 此更改会导致 scss 文件中的相对 url 出现问题。请参阅:github.com/angular/angular-cli/issues/…
  • 您好,您找到解决此问题的方法了吗?我在我的项目中面临同样的问题。 @湖人
【解决方案2】:
$ npm uninstall node-sass

这也将修复以下错误。

Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
ModuleBuildError: Module build failed (from ./node_modules/resolve-url-loader/index.js):
Error: resolve-url-loader: CSS error
  source-map information is not available at url() declaration (found orphan CR, try removeCR option)

【讨论】:

    【解决方案3】:

    卸载后我仍然收到同样的错误。

    我查看了源代码,发现检查很脆弱:

      try {
            sassImplementation = require('node-sass');
            wco.logger.warn(`'node-sass' usage is deprecated and will be removed in a future major version. ` +
                `To opt-out of the deprecated behaviour and start using 'sass' uninstall 'node-sass'.`);
        }
    

    这意味着,如果您在全局或某个父目录中安装了 node-sass,您将收到此警告。

    要对此进行测试,请在项目目录中创建一个新文件并使用 node 运行它:

    const t = require('node-sass');
    
    console.log(t);
    

    如果你没有得到module_not_found,这意味着它的node_sass 正在被解析。 就我而言,我的用户主目录下安装了 node-sass。

    【讨论】:

    • 卸载 node-sass(在 Angular 项目中和全局范围内)后,我的错误也没有消失。在 package-lock 文件中,我仍然找到对 node-sass 的引用作为 sass-loader 的可选 peerdependency,而后者又是 angular-devkit/build-angular 的必需包。知道我应该如何进行吗?
    • 我的情况是一样的,我正在尝试将 Angular 和 Angular Material 从 v11 迁移到 v12。我的 Angular 项目位于使用 node-sass 的父目录下。由于 Node 解析模块的方式,它会尝试查找父目录直到根目录,然后报告未找到 node-sass 并改用 sass。从 Angular v13 开始,他们将完全删除 node-sassgithub.com/angular/angular-cli/pull/21455
    【解决方案4】:

    尝试用“sass”替换“node-sass”

    npm uninstall node-sass
    npm i -S sass
    

    【讨论】:

      【解决方案5】:

      目前(2021 年 12 月)安装了

      npm install -g sass
      

      https://sass-lang.com/install

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-28
        • 1970-01-01
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        • 2018-08-18
        相关资源
        最近更新 更多