あきぞらです。
Laravelの開発環境を構築しているとき、一通り構築が終わったタイミングで
npm run dev
を実行したら「Sass Loader has been initialized ...
」といったエラーが発生してしまいました。
今回はその解決方法について紹介していきます。
npm run dev実行時にエラー
npm run dev
コマンドを実行したときに、以下のようなエラーが発生しました。
$ npm run dev ERROR Failed to compile with 2 errors error in ./resources/sass/app.scss Module build failed (from ./node_modules/css-loader/index.js): ModuleBuildError: Module build failed (from ./node_modules/sass-loader/dist/cjs.js): ValidationError: Invalid options object. Sass Loader has been initialized using an options object that does not match the API schema. - options has an unknown property 'outputStyle'. These properties are valid: object { implementation?, sassOptions?, prependData?, sourceMap?, webpackImporter? } at validate (\XXX\XXX\XXX\node_modules\schema-utils\dist\validate.js:98:11) at Object.loader (\XXX\XXX\XXX\node_modules\sass-loader\dist\index.js:36:28) at \XXX\XXX\XXX\node_modules\webpack\lib\NormalModule.js:316:20 at \XXX\XXX\XXX\node_modules\loader-runner\lib\LoaderRunner.js:367:11 at \XXX\XXX\XXX\node_modules\loader-runner\lib\LoaderRunner.js:233:18 at runSyncOrAsync (\XXX\XXX\XXX\node_modules\loader-runner\lib\LoaderRunner.js:143:3) at iterateNormalLoaders (\XXX\XXX\XXX\node_modules\loader-runner\lib\LoaderRunner.js:232:2) at \XXX\XXX\XXX\node_modules\loader-runner\lib\LoaderRunner.js:205:4 at \XXX\XXX\XXX\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:85:15 at processTicksAndRejections (internal/process/task_queues.js:75:11) error in ./resources/sass/app.scss
どうやら、sassを読み込むあたりでエラーになっているようです。
sass-loaderのバージョンを確認してみる
調べていくと、
sass-loaderのバージョンが8であるとエラーになってしまうことがあるようです。
GitHub
Compatibility with sass-loader 8.0.0 · Issue #2206 · JeffreyWay/laravel-mix
Laravel Mix Version: 4.1.2 Description: A heads up that Laravel mix doesn't seem to be compatible with sass-loader 8.0.0 (just released) which has some breaking changes. Steps To Reproduce: See...
package.jsonのsass-loaderのバージョンを確認してみると、確かに8.0.0でした。
"devDependencies": { "axios": "^0.18", "bootstrap": "^4.0.0", "cross-env": "^5.1", "jquery": "^3.2", "laravel-mix": "^4.0.7", "lodash": "^4.17.5", "popper.js": "^1.12", "resolve-url-loader": "^2.3.1", "sass": "^1.20.1", "sass-loader": "^8.0.0", }
sass-loaderのバージョンを7.1にする
バージョンを下げてインストールしなおしてみます。
まずは8をアンインストールします。
$ npm uninstall --save-dev sass-loader
7.1をインストールします。
$ npm install --save-dev sass-loader@7.1.0
これを実行したあと、再度npm run dev
を実行すると、うまくいきました!