【问题标题】:After upgrading npm package of Angular app, sass-loader does not work anymore升级 Angular 应用的 npm 包后,sass-loader 不再工作
【发布时间】:2022-01-11 21:28:25
【问题描述】:

我刚刚从 Angular 12 升级到 Angular 13,还更新了一些其他 NPM 包。
其中之一包含我的 angular.json 文件中引用的 scss 文件。这从来都不是问题,但在尝试为我的应用程序提供服务后,我收到一条我很难理解的错误消息:

./src/styles/ag-grid.scss.webpack[javascript/auto]!=!./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[6].rules[1].use[0]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].rules[1].use[1]!./src/styles/ag-grid.scss - Error: Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Can't find stylesheet to import.
  ╷
1 │ @import 'my-custom-package-layout/src/lib/styles/styles.scss';
  │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
  src\styles\ag-grid.scss 1:9  root stylesheet

./src/styles/products.scss.webpack[javascript/auto]!=!./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[6].rules[1].use[0]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].rules[1].use[1]!./src/styles/products.scss - Error: Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Can't find stylesheet to import.
  ╷
1 │ @import 'my-custom-package-layout/src/lib/styles/mixins.scss';
  │         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
  src\styles\products.scss 1:9  root stylesheet

./src/styles/ag-grid.scss - Error: Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
HookWebpackError: Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Can't find stylesheet to import.
  ╷

这只是很长的错误消息的第一行,指出在许多文件中都找不到“my-custom-package-layout/src/lib/styles/styles.scss”。
但是,如果我使用 Visual Studio 代码导航到那里,我不会收到错误,并且参考似乎很好。

这让我觉得 sass-loader 通常不再工作了。 (第一行很长。看那里 - 真的像这样!)
Angular 中如何实现 sass-loader?我无法重新安装 sass,因为它甚至没有在我的 package.json 中引用。
它是 Angular.cli 的一部分吗?

我可以尝试什么来更接近解决方案?

如果我运行“npm rebuild node-sass”,我很快就会得到回复:

rebuilt dependencies successfully

没有变化...

【问题讨论】:

    标签: angular npm sass sass-loader angular13


    【解决方案1】:

    这是因为 node-sass 的缓存版本。你可以试试这个。

    • 从全局 npm-cache 中删除 node-sass(适用于 Windows 用户 %userprofile%\AppData\Roaming\npm-cache)。
    • 从项目的 node_modules 目录中删除 node-sass。
    • 执行 npm install 以重新安装 node-sass。

    【讨论】:

    • 在我的情况下,“%userprofile%\AppData\Roaming\npm-cache”不包含 node-sass 文件夹。不幸的是,从 node_modules 重新安装也没有用。 :(
    【解决方案2】:

    我不得不在路径前面放一个 ~ 标志。 解决了它:

    @import '~my-custom-package-layout/src/lib/styles/mixins.scss';

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-26
      • 2019-07-22
      • 1970-01-01
      • 2023-03-14
      • 2018-09-16
      • 2012-12-13
      • 2016-01-03
      • 2021-07-15
      相关资源
      最近更新 更多