Running into “couldn't infer parser” error using vue-cli

后端 未结 5 1774
天命终不由人
天命终不由人 2020-12-31 14:59

I\'m getting an error repeatedly when trying to build a new webpack project using vue-cli. I\'m following along with the docs on the latest build (3.0.0-beta.11

相关标签:
5条回答
  • 2020-12-31 15:05

    As already pointed out by the various resonses, you may need to rollback the version of the prettier package.

    in your package.json file, you may need to force npm to use a version (i.e. remove the hat ^)

    mine looks something like this

    "devDependencies": {
    
    "prettier": "1.12.1",
    "typescript": "^2.6.1",
    "vue": "^2.5.16",
    "vue-styleguidist": "^1.4.4",
    "vue-webpack-loaders": "^1.0.6",
    "webpack": "^3.1.0"
    
    0 讨论(0)
  • 2020-12-31 15:13

    Known issue and it will be fixed in the next version of vue-cli

    In prettier 1.13.0, default parser was removed with a minor version(used to be babylon)

    Issue: https://github.com/vuejs/component-compiler-utils/issues/14

    Issue at prettier repo: https://github.com/prettier/prettier/issues/4567

    Sorry, we committed the age-old semver sin- we knew this was a breaking change, but because it would only affect a subset of our users, we didn't bump the major version, because we didn't want to create friction for our users to upgrade.

    To get the old behavior, add parser: "babylon". You may also want to lock prettier to a specific version in your package.json.

    0 讨论(0)
  • 2020-12-31 15:19

    Removing the current node_modules folder from the project, adding "prettier": "^1.12.1" to package.json and running npm install solved the issue.

    Another option is to run npm install prettier@1.12.1 without removeing the node_modules folder before

    Update:

    For some users, verion 1.12.1 did not work

    @Kivin proposed another solution that can be found here: vue webpack template missing parser

    0 讨论(0)
  • 2020-12-31 15:19

    Right now, I tried all the options..downloading and updgrading prettier...but none workied. Until I studied what happened carefully. Apparently, the prettier team removed the default parser which was babylon and in so doing...broke the internet.

    Just kidding.

    Issue repo

    The simplest solution, according to them would be to simply add the parser back. This has been picked up by the Vue team and its expected to be shipped with the latest fix release. If you are using Vue Loader/Yarn, dont even bother to try all the suggestions...I tried them all. What fixed it for me was...go to node_modules\vue-loader\lib\template-compiler ...open index.js and look for

    // prettify render fn if (!isProduction) { code = prettier.format(code, { semi: false}) }

    and change the lines to:

    // prettify render fn
    if (!isProduction) {
      code = prettier.format(code, { semi: false, parser: 'babylon' })
    }
    

    Thats it! Then once the issue got fixed, everything will just be rolled back and you will still be fine.

    Try this...it will save you countless minutes of searches....

    0 讨论(0)
  • 2020-12-31 15:22

    Running npm install prettier@1.12.1 solved it for me. Thanks lsxliron.

    0 讨论(0)
提交回复
热议问题