使用 vue-cli 运行 进入 "couldn't infer parser" 错误

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

我在尝试使用 vue-cli 构建新的 webpack 项目时反复遇到错误。我正在关注最新版本 (3.0.0-beta.11) 上的文档,也尝试使用不是测试版的早期版本。

当我 运行 yarn serve 它试图启动开发服务器并构建项目但在这里失败了:

error  in ./src/App.vue?vue&type=template&id=7ba5bd90

Module build failed: Error: No parser and no file path given, couldn't infer a parser.
    at normalize (/Users/cory/Code/chickadee/my-project/node_modules/prettier/index.js:7051:13)
    at formatWithCursor (/Users/cory/Code/chickadee/my-project/node_modules/prettier/index.js:10370:12)
    at /Users/cory/Code/chickadee/my-project/node_modules/prettier/index.js:31115:15
    at Object.format (/Users/cory/Code/chickadee/my-project/node_modules/prettier/index.js:31134:12)
    at actuallyCompile (/Users/cory/Code/chickadee/my-project/node_modules/@vue/component-compiler-utils/dist/compileTemplate.js:93:29)
    at compileTemplate (/Users/cory/Code/chickadee/my-project/node_modules/@vue/component-compiler-utils/dist/compileTemplate.js:26:16)
    at Object.module.exports (/Users/cory/Code/chickadee/my-project/node_modules/vue-loader/lib/loaders/templateLoader.js:42:20)

 @ ./src/App.vue?vue&type=template&id=7ba5bd90 1:0-194 1:0-194
 @ ./src/App.vue
 @ ./src/main.js
 @ multi (webpack)-dev-server/client/index.js (webpack)/hot/dev-server.js ./src/main.js

关于我的设置

我尝试过的事情

我还可以尝试什么来克服这个错误?

已知问题,下一个版本的 vue-cli

中会 fixed

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

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

更漂亮的回购问题: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.

从项目中删除当前的 node_modules 文件夹,将 "prettier": "^1.12.1" 添加到 package.json 并 运行ning npm install 解决了问题。

另一种选择是 运行 npm install prettier@1.12.1 之前

不删除 node_modules 文件夹

更新:

对于某些用户,版本 1.12.1 无法正常工作

@Kivin 提出了另一种解决方案,可以在这里找到:

运行 npm install prettier@1.12.1 帮我解决了。谢谢 lsxliron。

已经被各种resonses指出,你可能需要回滚prettier包的版本。

在您的 package.json 文件中,您可能需要强制 npm 使用一个版本(即移除帽子 ^)

我的看起来像这样

"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"

现在,我尝试了所有选项..下载和升级更漂亮...但是 none 工作。直到我仔细研究发生了什么。 显然,更漂亮的团队删除了 babylon 的默认解析器,这样做...破坏了互联网。

开个玩笑。

Issue repo

根据他们的说法,最简单的解决方案是简单地添加解析器。 这已被 Vue 团队采用,预计将与最新的修复版本一起发布。 如果您使用的是 Vue Loader/Yarn,请不要费心去尝试所有的建议……我都试过了。 为我修复的是......去 node_modules\vue-loader\lib\template-compiler ...打开 index.js 并查找

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

并将行更改为:

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

就是这样! 然后一旦问题得到解决,一切都会回滚,你仍然会没事的。

试试这个...它将为您节省无数分钟的搜索....