无法在 Angular 6 项目中导入第 3 方 material sass/scss 文件
Failed to import 3rd party material sass/scss files in Angular 6 Project
我可以在 Angular 中使用 Material 组件吗?如果是这样,正确的做法是什么?
我正在使用这个link
的指南
我用过:npm install @ material/image-list
然后我在 style.scss 中导入:@import "@material/image-list/mdc-image-list";
编译时出现以下错误:
ERROR in ./src/styles.scss
(./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/sass-loader/lib/loader.js??ref--14-3!./src/styles.scss)
Module build failed: @import "@material/image-list/mdc-image-list"; ^
File to import not found or unreadable:
@material/image-list/mdc-image-list. in
/Users/pacozevallos/cuscoAvisos/avisos/src/styles.scss (line 66,
column 1)
然后当我查看 mdc-image-list.scss
时,我发现:
您必须配置 Angular CLI 来解决这个问题。
默认情况下,它会搜索 ./
。
@import "@material/image-list/mdc-image-list"
=== 从 ./@material/image-list/mdc-image-list
导入
但这是存储在 node_modules
中的第三方模块。
打开 angular.json
文件并更改 stylePreprocessorOptions.includePaths
属性.
stylePreprocessorOptions": {
"includePaths": [
".",
"./node_modules"
]
}
示例配置:
{
// ...
"styles": [ ],
"stylePreprocessorOptions": {
"includePaths": [
".",
"./node_modules"
]
},
"scripts": []
// ...
}
还有一个替代解决方案。您可以使用 ~
符号告诉 Angular CLI 从 node_module
中选择它。
例如@import "~@material/image-list/mdc-image-list"
但它不适用于此设置,因为此 scss
还具有需要从 node_module
中搜索的依赖项。
参考:Angular Wiki
我可以在 Angular 中使用 Material 组件吗?如果是这样,正确的做法是什么?
我正在使用这个link
的指南我用过:npm install @ material/image-list
然后我在 style.scss 中导入:@import "@material/image-list/mdc-image-list";
编译时出现以下错误:
ERROR in ./src/styles.scss (./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/sass-loader/lib/loader.js??ref--14-3!./src/styles.scss) Module build failed: @import "@material/image-list/mdc-image-list"; ^ File to import not found or unreadable: @material/image-list/mdc-image-list. in /Users/pacozevallos/cuscoAvisos/avisos/src/styles.scss (line 66, column 1)
然后当我查看 mdc-image-list.scss
时,我发现:
您必须配置 Angular CLI 来解决这个问题。
默认情况下,它会搜索 ./
。
@import "@material/image-list/mdc-image-list"
=== 从 ./@material/image-list/mdc-image-list
但这是存储在 node_modules
中的第三方模块。
打开 angular.json
文件并更改 stylePreprocessorOptions.includePaths
属性.
stylePreprocessorOptions": {
"includePaths": [
".",
"./node_modules"
]
}
示例配置:
{
// ...
"styles": [ ],
"stylePreprocessorOptions": {
"includePaths": [
".",
"./node_modules"
]
},
"scripts": []
// ...
}
还有一个替代解决方案。您可以使用 ~
符号告诉 Angular CLI 从 node_module
中选择它。
例如@import "~@material/image-list/mdc-image-list"
但它不适用于此设置,因为此 scss
还具有需要从 node_module
中搜索的依赖项。
参考:Angular Wiki