I am trying to import a theme from a CSS module, but TypeScript gives me the error "Cannot find the module" and the theme does not apply at runtime. I think something is wrong with my Webpack configuration, but I'm not sure where the problem is.
I use the following tools:
"typescript": "^2.0.3" "webpack": "2.1.0-beta.25" "webpack-dev-server": "^2.1.0-beta.9" "react": "^15.4.0-rc.4" "react-toolbox": "^1.2.3" "node-sass": "^3.10.1" "style-loader": "^0.13.1" "css-loader": "^0.25.0" "sass-loader": "^4.0.2" "sass-lint": "^1.9.1" "sasslint-webpack-plugin": "^1.0.4"
Here is my webpack.config.js
var path = require('path'); var webpack = require('webpack'); var sassLintPlugin = require('sasslint-webpack-plugin'); module.exports = { entry: [ 'webpack-dev-server/client?http://localhost:8080', 'webpack/hot/dev-server', './src/index.tsx', ], output: { path: path.resolve(__dirname, 'dist'), publicPath: 'http://localhost:8080/', filename: 'dist/bundle.js', }, devtool: 'source-map', resolve: { extensions: ['.webpack.js', '.web.js', '.ts', '.tsx', '.js'], }, module: { rules: [{ test: /\.js$/, loader: 'source-map-loader', exclude: /node_modules/, enforce: 'pre', }, { test: /\.tsx?$/, loader: 'tslint-loader', exclude: /node_modules/, enforce: 'pre', }, { test: /\.tsx?$/, loaders: [ 'react-hot-loader/webpack', 'awesome-typescript-loader', ], exclude: /node_modules/, }, { test: /\.scss$/, loaders: ['style', 'css', 'sass'] }, { test: /\.css$/, loaders: ['style', 'css'] }], }, externals: { 'react': 'React', 'react-dom': 'ReactDOM' }, plugins: [ new sassLintPlugin({ glob: 'src/**/*.s?(a|c)ss', ignoreFiles: ['src/normalize.scss'], failOnWarning: false,
and my App.tsx
, where I am trying to import:
import * as React from 'react'; import { AppBar } from 'react-toolbox'; import appBarTheme from 'react-toolbox/components/app_bar/theme.scss' // local ./theme.scss stylesheets aren't found either interface IAppStateProps { // No props yet } interface IAppDispatchProps { // No state yet } class App extends React.Component<IAppStateProps & IAppDispatchProps, any> { constructor(props: IAppStateProps & IAppDispatchProps) { super(props); } public render() { return ( <div className='wrapper'> <AppBar title='My App Bar' theme={appBarTheme}> </AppBar> </div> ); } } export default App;
What else is needed to enable import of style sheet modules?