2017-11-07 17 views
1

私はSASSをSCSS形式で使用できるように私の反応プロジェクトをセットアップしようとしています。反応アプリをSCSSに設定するにはどうすればよいですか? (エラー)

これは私のwebpack.config.dev.jsである:

 { 
     test: /\.scss$/, 
     exclude: /node_modules/, 
     use: [ 
      require.resolve('style-loader'), 
      { 
      loader: require.resolve('css-loader'), 
      options: { 
       importLoaders: 1, 
      }, 
      }, 
      { 
      loader: require.resolve('sass-loader'), 
      } 
     ] 
     } 

私は2つの異なる方法で私のJSXにSCSSファイルをインポートする:私は、私はアプリを実行すると

import './index.scss'; 
import css from './ModalWrapper.scss'; 

現在、エラーが発生しています:

./src/index.scss 
Module build failed: 
body { 
^ 
     Invalid CSS after "m": expected 1 selector or at-rule, was "module.exports = __" 
     in /pathtoapp/web/src/index.scss (line 1, column 1) 

私は、SCSSをCSSと解釈しようとしていますrk。さらに、反応は身体が有効なCSSではないと考えています。 CSSやSCSSが正しく読み込まれているとは思えません。

ご協力いただければ幸いです。この問題には未解決の問題がかなりあります。

+0

各scssファイルを - コンポーネントスタイルの別のコンポーネントにインポートしていますか、ルートのアプリケーションファイルにrootのscssファイルをインポートしていますか? –

+0

scssファイルをコンポーネントスタイルの別のコンポーネントにインポートします。しかし、定数とフォント用のグローバルscssファイルも2つ持っています。 – Programmingjoe

+0

簡単な答えよりも少し複雑ですが、この記事では、インストールしてセットアップを手伝うのに役立つと思います - > https://medium.com/@srinisoundar/setting-up-environment-for-react- sass-es2015-babel-with-webpack-2f77445129 –

答えて

0

これは私のために働いてしまったものです:

{ 
     test: /\.scss$/, 
     use: [{ 
      loader: 'style-loader' 
     }, { 
      loader: 'css-loader', 
      options: { 
      modules: true, 
      sourceMap: true, 
      localIdentName: "[local]___[hash:base64:5]", 
      }, 
     }, { 
      loader: 'sass-loader', 
      options: { 
      outputStyle: "expanded", 
      sourceMap: true, 
      }, 
     }] 
     }, 
8

あなたはWebPACKの3の上にある場合は、module.rules

{ 
    test: /\.scss$/, 
    loader: [ 
     require.resolve('style-loader'), 
     require.resolve('css-loader'), 
     require.resolve('sass-loader'), 
    ] 
}, 

にこれを追加し、ファイルローダーを追加し、この

{ 
     loader: require.resolve('file-loader'), 
     // Exclude `js` files to keep "css" loader working as it injects 
     // it's runtime that would otherwise processed through "file" loader. 
     // Also exclude `html` and `json` extensions so they get processed 
     // by webpacks internal loaders. 
     exclude: [/\.js$/, /\.html$/, /\.json$/, /\.scss$/,], 
     options: { 
      name: 'static/media/[name].[hash:8].[ext]', 
     }, 
} 

などの主要excludeの配列に.scssを追加してくださいもちろん、style-loadersass-loadercss-loaderfile-loaderがpackage.jsonに含まれていることを確認してください。このコードスニペットは、create-react-appの最新バージョンを使用しているときに役立ちました。

+0

セーバー〜!私は私のwebpackの設定で何が間違っているかを知るのに2時間を費やしました。この1つは私の問題を解決しました〜!ありがとう〜! – Franva

0

私は内部のWebPACKの一部を消去し(私は他の回答も同じくらい優れていると確信しているが、最大簡潔にするため、これは私のために動作します。おそらく人々の反応生成によって作らconfig.dev.jsのコメント):

module: { 
strictExportPresence: true, 
rules: [ 
     { 
      test: /\.scss/, 
      use: ['style-loader','css-loader', 'sass-loader'] 
     },... 

それが重要かどうかは知りませんが、私は上にこれを置きます。また、上記のように除外された配列にscssファイルを追加してください。

関連する問題