使用 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
关于我的设置
- Mac OS
- 我是运行ning node v8.5.0
- 包安装
yarn
我尝试过的事情
- 不同版本的
vue-cli
生成新项目。项目生成并安装模块。
- 尝试删除
prettier
模块,但错误似乎仍然存在。
- 已尝试重新安装所有模块。
我还可以尝试什么来克服这个错误?
已知问题,下一个版本的 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
的默认解析器,这样做...破坏了互联网。
开个玩笑。
根据他们的说法,最简单的解决方案是简单地添加解析器。
这已被 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' })
}
就是这样!
然后一旦问题得到解决,一切都会回滚,你仍然会没事的。
试试这个...它将为您节省无数分钟的搜索....
我在尝试使用 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
关于我的设置
- Mac OS
- 我是运行ning node v8.5.0
- 包安装
yarn
我尝试过的事情
- 不同版本的
vue-cli
生成新项目。项目生成并安装模块。 - 尝试删除
prettier
模块,但错误似乎仍然存在。 - 已尝试重新安装所有模块。
我还可以尝试什么来克服这个错误?
已知问题,下一个版本的 vue-cli
中会 fixedIn 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
的默认解析器,这样做...破坏了互联网。
开个玩笑。
根据他们的说法,最简单的解决方案是简单地添加解析器。
这已被 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' })
}
就是这样! 然后一旦问题得到解决,一切都会回滚,你仍然会没事的。
试试这个...它将为您节省无数分钟的搜索....