Sass Loader Error : API 스키마와 일치하지 않는 잘못된 옵션 개체


17

VueJS를 VuetifyJS (v2.0.19) 프레임 워크와 함께 사용하고 있습니다. npm run serve를 실행 한 후이 오류가 발생 합니다 .

Sass Loader는 API 스키마와 일치하지 않는 옵션 객체를 사용하여 초기화되었습니다.

내가 시도한 것 : node_modules 폴더를 삭제하고 모든 npm 패키지와 node.js를 최신 안정 버전으로 재설치 / 업데이트했습니다.

전체 오류 메시지 :

 error  in ./node_modules/vuetify/src/components/VRangeSlider/VRangeSlider.sass

Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
ValidationError: Invalid options object. Sass Loader has been initialised using an options object that does not match the API schema.
 - options has an unknown property 'indentedSyntax'. These properties are valid:
   object { implementation?, sassOptions?, prependData?, sourceMap?, webpackImporter? }
    at validate (/home/do/Desktop/A/Projects/Ral/AppCLI3/node_modules/sass-loader/node_modules/schema-utils/dist/validate.js:50:11)
    at Object.loader (/home/do/Desktop/A/Projects/Ral/AppCLI3/node_modules/sass-loader/dist/index.js:36:28)

 @ ./node_modules/vuetify/src/components/VRangeSlider/VRangeSlider.sass 4:14-208 14:3-18:5 15:22-216
 @ ./node_modules/vuetify/lib/components/VRangeSlider/VRangeSlider.js
 @ ./node_modules/vuetify/lib/components/VRangeSlider/index.js
 @ ./node_modules/vuetify/lib/components/index.js
 @ ./node_modules/vuetify/lib/index.js
 @ ./src/main.js
 @ multi (webpack)-dev-server/client?http://192.168.2.115:8080/sockjs-node (webpack)/hot/dev-server.js ./src/main.js

 error  in ./node_modules/vuetify/src/styles/main.sass

내 package.json :

  {
  "name": "app",
  "version": "0.1.0",
  "private": false,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "core-js": "^3.2.1",
    "fibers": "^4.0.1",
    "firebase": "^7.0.0",
    "material-icons": "^0.3.1",
    "register-service-worker": "^1.6.2",
    "vue": "^2.6.10",
    "vue-flickity": "^1.2.1",
    "vue-router": "^3.1.3",
    "vuetify": "^2.0.19",
    "vuex": "^3.1.1"
  },
  "devDependencies": {
    "@mdi/font": "^4.4.95",
    "@vue/cli-plugin-babel": "^3.11.0",
    "@vue/cli-plugin-eslint": "^3.11.0",
    "@vue/cli-plugin-pwa": "^3.11.0",
    "@vue/cli-service": "^3.11.0",
    "@vue/eslint-config-prettier": "^5.0.0",
    "babel-eslint": "^10.0.3",
    "eslint": "^6.5.1",
    "eslint-plugin-prettier": "^3.1.1",
    "eslint-plugin-vue": "^5.2.3",
    "material-design-icons-iconfont": "^5.0.1",
    "node-sass": "^4.12.0",
    "prettier": "1.18.2",
    "sass-loader": "^8.0.0",
    "stylus": "^0.54.7",
    "stylus-loader": "^3.0.2",
    "uglifyjs-webpack-plugin": "^2.2.0",
    "vue-cli-plugin-vuetify": "^0.6.3",
    "vue-loader": "^15.7.1",
    "vue-template-compiler": "^2.6.10",
    "vuetify-loader": "^1.3.0",
    "webpack": "^4.41.0",
    "webpack-cli": "^3.3.9"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "@vue/prettier"
    ],
    "rules": {
      "no-console": "off"
    },
    "parserOptions": {
      "parser": "babel-eslint"
    }
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions"
  ]
}

이 문제를 해결하는 방법?

답변:


22

https://github.com/JeffreyWay/laravel-mix/issues/2206 과 같은 문제가있는 것 같습니다.

해결책은

npm uninstall --save-dev sass-loader
npm install --save-dev sass-loader@7.1.0

1
다운 그레이드는 가장 우아한 접근법처럼 보이지 않았지만, 나를 위해 속임수를 쓴 유일한 방법이었습니다. 그러나 stackoverflow.com/users/5302733/… 에 의한 아래 답변은 완료되었지만 동일한 오류가 발생했습니다.
crocodile2u

이것은 나에게도 효과가있었습니다.
Hassan Dad Khan

6

당신이 사용하는 경우 vue-cli 4이 오류를 방지하기 위해 당신의 설정을 변경해야합니다 sass-loadervue.config.js오류가 해결 될 것입니다 그 후, 아래의 예와 같이.

const path = require('path');

module.exports = {
  chainWebpack(config) {
    config
      .entry('app')
      .clear()
      .add('./src/core/main.js')
      .end();
    config.resolve.alias
      .set('~', path.join(__dirname, './src'))
      .set('@', path.join(__dirname, './src/core'))
      .set('#', path.join(__dirname, './src/modules'))
  },
  css: {
    loaderOptions: {
      sass: {
        sassOptions: {
          includePaths: [
            path.resolve(__dirname, 'src/core/')
          ],
          indentedSyntax: true,
        },
        prependData: '@import "~@/assets/sass/main.scss"',
      },
    },
  },
  assetsDir: '@/assets/',
}

자신의 구성을 지정하는 것을 잊지 마십시오. sass-loader repo 에서 구성을 확인하십시오 .

를 사용 하면 사용 하고 이전 구성이 여전히 작동 하면 vue cli 3작동 sass-loader v7하지 않습니다 .v8vue cli 3sass-loader v7

행운과 안부.


내 문제를 해결했다. 감사.
Firmino Changani

3

indentedSyntax의 일부입니다 sassOptions:

sassOptions: {  indentedSyntax: true  }

예를 들면 다음과 같습니다.

{
    loader: 'sass-loader',
    options: {
        sassOptions: {
            indentedSyntax: true
        }
    }
}

따라서 Webpack 구성을 변경하여 변경하십시오.


1
내가 사용하는 CLI 내에서 실행할 수 및 오류가 발생 할 수없는 새로운 webpack.LoaderOptionsPlugin을 ({ 때문에 로드 옵션이 오래된된다. 내가 사용 vue.config.js 구성 웹팩에 (뷰 CLI 3). 수 당신에게하십시오 자세한 내용 게시
Tom Tom

1
어떻게 당신은 또한, (VUE 초기화가 템플릿으로, VUE 생성) 응용 프로그램을 만들 않았다 후 그 vue.config.js
madflow

1

내 경우에는 내가 내가 실행할 때 실제 오류가 터미널에 emmitted 도착 후 downgrage 말대꾸 로더로했다 ng serve될 whould, vue-cli-service내가 더 파고 것, 그것은 말대꾸 로더의 V8에 문제가 있다고 생각 귀하의 경우

그 동안, 이것은 도움이 될 수 있습니다. package.json에서 sass-loader를 편집하여 읽으십시오. "sass-loader": "7.0.1",

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.