質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

4143閲覧

webpackでsassをパースする

rina_teratail

総合スコア14

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/04/05 04:18

Reactのプロジェクトにsassを導入するために、パッケージをインストールし、webpackの設定ファイルを編集しています。

./style/style.scssをパースして./dist/style.cssに持っていきたいのですが、以下のようなエラーが出てきてしまい、しばらく迷子状態になっています。。

ERROR in ./style/style.scss Module parse failed: /Users/Me/Codes/style/style.scss Unexpected token (7:10) You may need an appropriate loader to handle this file type. SyntaxError: Unexpected token (7:10)

パッケージ

"css-loader": "^0.28.11" "extract-text-webpack-plugin": "^3.0.2" "node-sass": "^4.8.3" "sass-loader": "^6.0.7" "style-loader": "^0.20.3" "url-loader": "^0.6.2" "webpack": "^1.12.9"

webpack.config.js

var path = require('path'); const ExtractTextPlugin = require("extract-text-webpack-plugin"); const extractSass = new ExtractTextPlugin({ filename: "[name].[contenthash].css", disable: process.env.NODE_ENV === "development" }); module.exports = [ { entry: ['./src/index.js'], output: { path: __dirname, publicPath: '/', filename: 'bundle.js' }, module: { loaders: [ { exclude: /node_modules/, loader: 'babel', query: { presets: ['react', 'es2015', 'stage-1', 'flow'] } }, { test: /.svg$/, loader: 'babel!svg-react' }, { test: /.(jpg|png)$/, loader: 'url-loader' }, { test: /.json$/, loader: 'json' }, { test: /.css$/, loader: "style!css?modules" } ] }, resolve: { extensions: ['', '.js', '.jsx', '.json'] }, devServer: { historyApiFallback: true, contentBase: './' } }, { entry: './style/style.scss', watch: true, output: { path: './dist/', filename: 'style.css' }, module: { rules: [ { test: /.scss$/, use: extractSass.extract({ use: [ { loader: "css-loader" }, { loader: "sass-loader" } ], fallback: 'style-loader' }) } ] }, plugins: [extractSass] } ];

もし解決方法をご存知の方がいたら教えていただきたいですm(_ _)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

以下のパッケージをアップデート/導入して

"webpack": "^4.5.0", "webpack-cli": "^2.0.14", "webpack-dev-server": "^3.1.1"

webpack.config.jsファイルを以下のように変更してやっと解決しました...!
webpackのバージョンによって書き方が違ったり他のパッケージとの互換性がなくなったりしていたので何個もエラーを直さなければなしませんでしたが。。

var path = require('path'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); module.exports = [ { entry: ['./src/index.js'], output: { path: __dirname, publicPath: '/', filename: 'bundle.js' }, module: { rules: [ { exclude: /node_modules/, loader: 'babel-loader', query: { presets: ['react', 'es2015', 'stage-1', 'flow'] } }, { test: /.svg$/, loader: 'babel-loader!svg-react-loader' }, { test: /.(jpg|png)$/, loader: 'url-loader' }, { test: /.json$/, loader: 'json-loader' }, { test: /.css$/, loader: 'style-loader!css-loader?modules' }, { test: /.scss$/, loader: 'sass-loader!css-loader' } ] }, resolve: { extensions: ['*', '.js', '.jsx', '.json'] }, devServer: { historyApiFallback: true, contentBase: './' } }, { entry: './style/style.scss', watch: true, output: { path: __dirname + '/dist/', filename: 'style.css' }, module: { rules: [ { test: /.scss$/, use: ExtractTextPlugin.extract({ use: [ { loader: 'css-loader' }, { loader: 'sass-loader' } ], fallback: 'style-loader' }) } ] }, plugins: [new ExtractTextPlugin('style.css')] } ];

投稿2018/04/05 09:08

rina_teratail

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

module.exportsに配列で2つのコンフィグオブジェクトを渡していますが、これは何故ですか?

片方ではsass-loaderが利用されていますが、もう片方では利用されていないので、ビルドを実行する際の環境では、もうsass-loaderが利用されていないコンフィグオブジェクトが使われているのかもしれませんね。(質問文の情報だけでは分かりませんが)

というか、webpackのバージョンが1なのですね。module.loadersはwebpack2からmodule.rulesに変更になっているので、その辺りも確認した方が良いかと思います。

Module parse failed: /Users/Me/Codes/style/style.scss Unexpected token (7:10)

あとはstyle.scss自体に構文エラーが起きていないか確認してみてください。

投稿2018/04/05 04:40

編集2018/04/05 04:42
HayatoKamono

総合スコア2415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rina_teratail

2018/04/05 09:10

いつもありがとうございます!おかげで解決しました ???? 配列で渡していたのはJavaScriptとCSSで分けているからなのですが、あまり良くない書き方でしょうか??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問