Reputation: 13778
/src/styles/main.scss
@import 'materialize/sass/materialize.scss';
....
I also try @import './materialize/sass/materialize.scss';
here
notwork.
It only work when I import the lib in index.js
/src/index.js (this worked)
import './styles/reset.css';
import './styles/main.scss';
import './styles/font-awesome/font-awesome.scss';
webpack loader:
loaders: [
{
test: /\.js?/,
exclude: [/node_modules/, /styles/],
loaders: ['babel'],
include: path.join(__dirname, 'src')
},
{
test: /\.scss$/,
loader: 'style!css!sass'
},
{
test: /\.css$/,
loader: "style-loader!css-loader"
},
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'url-loader?limit=10000&mimetype=application/font-woff'
},
{
test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'file-loader'
}
]
But got error:
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Thin.eot in E:\Project\simple-redux
-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:73945-73987 6:74010-74052
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Thin.woff2 in E:\Project\simple-red
ux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:74104-74148
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Thin.woff in E:\Project\simple-redu
x-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:74181-74224
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Thin.ttf in E:\Project\simple-redux
-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:74256-74298
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Light.eot in E:\Project\simple-redu
x-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:74430-74473 6:74496-74539
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Light.woff2 in E:\Project\simple-re
dux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:74591-74636
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Light.woff in E:\Project\simple-red
ux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:74669-74713
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Light.ttf in E:\Project\simple-redu
x-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:74745-74788
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Regular.eot in E:\Project\simple-re
dux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:74922-74967 6:74990-75035
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Regular.woff2 in E:\Project\simple-
redux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:75087-75134
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Regular.woff in E:\Project\simple-r
edux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:75167-75213
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Regular.ttf in E:\Project\simple-re
dux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:75245-75290
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Medium.eot in E:\Project\simple-red
ux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:75401-75445 6:75468-75512
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Medium.woff2 in E:\Project\simple-r
edux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:75564-75610
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Medium.woff in E:\Project\simple-re
dux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:75643-75688
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Medium.ttf in E:\Project\simple-red
ux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:75720-75764
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Bold.eot in E:\Project\simple-redux
-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:75875-75917 6:75940-75982
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Bold.woff2 in E:\Project\simple-red
ux-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:76034-76078
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Bold.woff in E:\Project\simple-redu
x-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:76111-76154
ERROR in ./~/css-loader!./~/sass-loader!./src/styles/main.scss
Module not found: Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Bold.ttf in E:\Project\simple-redux
-boilerplate\src\styles
@ ./~/css-loader!./~/sass-loader!./src/styles/main.scss 6:76186-76228
It looks like webpack
search for a wrong directory, not search fonts
folder under materialize
.
I got error every time when I put import sass lib in main.scss
, which force me to put import
to index.js
. Anyway to workaround ?
Update:
I found there are config in
\src\styles\materialize\sass\components\_variables.scss
:
$roboto-font-path: "../fonts/roboto/" !default;
But it is relate to components
, is this webpack 's bug?
Upvotes: 3
Views: 7143
Reputation: 2067
I think it is a problem related to css-loader
or sass-loader
, somehow they are not really resolving the paths correctly when inside node_modules
. And that is the reason why you have those errors.
Look at the error:
Error: Cannot resolve 'file' or 'directory' ../fonts/roboto/Roboto-Bold.woff in E:\Project\simple-redux-boilerplate\src\styles
It seems that the css-loader
is trying to find ../fonts/
inside your src/styles
folder.
As a workaround, you can specify the "correct" place where the fonts are placed as your $roboto-font-path
variable. If installed via npm install materialize-css
you can do the following:
$roboto-font-path: '~materialize-css/fonts/roboto/';
The tilde (~) character will say to your loaders to look into node_modules
. Then, when resolving your paths, your loaders will look to the correct place and there will be no errors.
I think (and tested it locally) you don't need to use the tilde character to look at
node_modules
usingsass-loader
.
If you don't want to look into node_modules
(because you prefer to download the dependencies manually) you can just use the relative paths. In your case $roboto-font-path: './materialize/fonts/roboto/';
should fix it.
Update:
You can also try using resolve-url-loader
, that tries to fix the urls for you.
Related:
How do I load font-awesome using SCSS (SASS) in Webpack using relative paths?
Upvotes: 5