Sass Loader Error: Invalid options object that does not match the API schema

后端 未结 7 542
别跟我提以往
别跟我提以往 2020-12-16 09:40

I\'m using VueJS with the framework VuetifyJS (v2.0.19). I\'m getting this error after running npm run serve:

Sass Loader has been initialise

7条回答
  •  天涯浪人
    2020-12-16 10:12

    Problem

    Based on https://github.com/vuejs/vue-cli/issues/4513, And If you have upgrade your sass-loader from v7 to 8 or 9, You may have faced with the validation-error for invalid options

    vue.config.js(valid syntax for sass-loaderv7 in webpack)

      css: {
        loaderOptions: {
          sass: {
            data: `@import "@/assets/styles/variables/index.scss";`
          }
        }
      }
    

    errors

    object:
        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 'data'. These properties are valid:
    

    sass-loader v8.0 Breaking Changes

    You should know that v8. has below breaking changes :https://github.com/webpack-contrib/sass-loader/releases/tag/v8.0.0

    • minimum required webpack version is 4.36.0
    • minimum required node.js version is 8.9.0
    • move all sass (includePaths, importer, functions) options to the sassOptions option. The functions option can't be used as Function, you should use sassOption as Function to achieve this.
    • the data option was renamed to the prependData option default value of the sourceMap option depends on the devtool value (eval/false values don't enable source map generation)

    Solution v8

    As the docs says, move all sass (includePaths, importer, functions) options to the sassOptions option. The functions option can't be used as Function, you should use sassOption as Function to achieve this. the data option was renamed to the prependData option

    sass-loader v9.0 Breaking Changes

    You should know that v9. has below breaking changes :https://github.com/webpack-contrib/sass-loader/releases/tag/v9.0.0

    • BREAKING CHANGES minimum supported Nodejs version is 10.13
    • prefer sass (dart-sass) by default, it is strongly recommended to migrate on sass (dart-sass)
    • the prependData option was removed in favor the additionalData option, see docs
    • when the sourceMap is true, sassOptions.sourceMap, sassOptions.sourceMapContents, sassOptions.sourceMapEmbed, sassOptions.sourceMapRoot and sassOptions.omitSourceMapUrl will be ignored.

    Solution v9

    In ver9 as you can see in the docs https://github.com/webpack-contrib/sass-loader#options (https://github.com/webpack-contrib/sass-loader#sassoptions , https://github.com/webpack-contrib/sass-loader#additionaldata), if we change data to additionalData it will fix the invalid options errors.

      css: {
        loaderOptions: {
          sass: {
            additionalData: `@import "@/assets/styles/variables/index.scss";`
          }
        }
      }
    

提交回复
热议问题