20

Importing style from css files. Returning empty object. Seems css-loader is not working correctly. Can anyone help me on this. Please find the reference files below

index.js

import React from 'react'   
import style from './header.css'

console.log(style) // Returning empty object

export default class Header extends React.PureComponent {
  render() {
    return(
      <header className = {style.header}>
        This is header component
      </header>
    )
  }
}

./header.css

.header {
  background: #007DC6;
}

./webpack.config.js

{
  test: /\.css$/,
  exclude: /node_modules/,
  loaders: ['style-loader', 'css-loader'],
}, {
  test: /\.css$/,
  include: /node_modules/,
  loaders: ['style-loader', 'css-loader'],
}
zurfyx
  • 31,043
  • 20
  • 111
  • 145
Gopinath Shiva
  • 3,822
  • 5
  • 25
  • 48

2 Answers2

16

I wonder if this is perhaps you are not using css-modules. The example you are showing there is an example of implementing the css-modules feature of the loader.

Perhaps try adding the ?modules query to your css-loader definition.

Sean Larkin
  • 6,290
  • 1
  • 28
  • 43
7

You can fix your problem with three ways :

#1: Replace 'css-loader' with 'css-loader?modules=true&camelCase=true'

#2: Do old school like this :

##index.js

import React from 'react'   
import './header.css'

export default class Header extends React.PureComponent {
  render() {
    return(
      <header className="header">
        This is header component
      </header>
    )
  }
}

#3: use babel-plugin-react-css-modules or React CSS Modules

Mohammad Rajabloo
  • 2,567
  • 19
  • 20
  • I'm trying the 2nd method. But I can't seem to make it work. If I do import styles from file and the use stles.classname then it work. I'm new to react. What exactly I'm doing wrong? – Rohan Shenoy Oct 10 '20 at 06:44
  • look @RohanShenoy, in the second method all styles in `header.css` file will attach to the final project and it's not modular, I suggest you follow this page: https://create-react-app.dev/docs/adding-a-css-modules-stylesheet – Mohammad Rajabloo Oct 11 '20 at 11:55
  • Hi @Mohammad. Thanks a lot for the reply. Yes you're right I got the issue because it was modular. – Rohan Shenoy Oct 11 '20 at 16:33