How to import css file for into Component .jsx file

16,915

Solution 1

How are you compiling this? If it's webpack, you'd probably need to bring in the style-loader and include something like this in the module.loaders array in your webpack config:

{
  test: /\.css$/,
  loader: "style!css"
}

Update: With the webpack.config.js now provided, we can confirm it needed a change in the module.loaders array. OP was using a less loader and only checking for .less files, so the exact loader object should read:

{
  test: /\.(less|css)$/,
  loader: 'style!css!less'
}

As suggested by @Q Liu. Leaving the original bit as if someone comes here with an error importing a .css file, it's likely what they need.

Solution 2

I used the following in my webpack config and it worked:

test: /\.css$/,
        use: [
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              modules: true,
            },
          },
        ],
Share:
16,915
letter Q
Author by

letter Q

Updated on June 16, 2022

Comments

  • letter Q
    letter Q almost 2 years

    I am trying to use the react-day-pickers component like so but I can't figure out how to import the .css file and I keep getting the error:

    Module parse failed: 
    
    /Users/qliu/Documents/workspace/AppNexus/pricing_ui/contract-ui/app_contract-ui/node_modules/react-day-picker/lib/style.css Unexpected token (3:0)
    You may need an appropriate loader to handle this file type.
    SyntaxError: Unexpected token (3:0)
    

    I have "css-loader": "^0.19.0", in my package.json installed and here is my Calender.jsx file:

    import React from "react";
    import DayPicker, { DateUtils } from "react-day-picker";
    
    import "../../../node_modules/react-day-picker/lib/style.css"; // <==== ERROR ON THIS LINE
    
    export default class Calender extends React.Component {
    
      state = {
        selectedDay: null
      };
    
      handleDayClick(e, day, modifiers) {
        if (modifiers.indexOf("disabled") > -1) {
          console.log("User clicked a disabled day.");
          return;
        }
        this.setState({
          selectedDay: day
        });
      }
    
      render() {
    
        // Add the `selected` modifier to the cell of the clicked day
        const modifiers = {
          disabled: DateUtils.isPastDay,
          selected: day => DateUtils.isSameDay(this.state.selectedDay, day)
        };
    
        return <DayPicker enableOutsideDays modifiers={ modifiers } onDayClick={ this.handleDayClick.bind(this) } />;
      }
    }
    

    and this is my webpack.config.js:

    var path = require('path');
    var webpack = require('webpack');
    var settings = require('./src/server/config/settings');
    var LessPluginAutoPrefix = require('less-plugin-autoprefix');
    
    module.exports = {
        devtool: '#source-map',
        resolve: {
            extensions: ['', '.jsx', '.js']
        },
        entry: [
            'webpack-hot-middleware/client',
            './src/client/index.jsx'
        ],
        externals: {
            'react': 'React',
            'react-dom': 'ReactDOM',
    
            // to avoid duplicate import of React with react-addons-css-transition-group
            './React': 'React',
            './ReactDOM': 'ReactDOM',
            config: 'config'
        },
        output: {
            path: path.join(__dirname, 'public'),
            filename: 'bundle.js',
            publicPath: '/'
        },
        plugins: [
            new webpack.HotModuleReplacementPlugin(),
            new webpack.NoErrorsPlugin()
        ],
        lessLoader: {
            lessPlugins: [
                new LessPluginAutoPrefix({ browsers: ['last 2 versions'] })
            ]
        },
        module: {
            loaders: [{
                test: /\.(js|jsx)$/,
                loaders: ['babel'],
                exclude: /node_modules/
            },
            {
                test: /\.less$/,
                loader: 'style!css!less'
            },
            {
                test: /\.json$/,
                loader: 'json-loader'
            }]
        }
    };