Vue使用webpack:No parser and no file path given, couldn't infer a parser.

时间:2022-05-08 17:43:31

使用vue-cli搭建基于webpack的vue应用报错:

Module build failed: Error: No parser and no file path given, couldn't infer a parser.
at normalize (myproject\node_modules\prettier\index.js:7051:13)
at formatWithCursor (myproject\node_modules\prettier\index.js:10370:12)
at path\node_modules\prettier\index.js:31115:15
at Object.format (myproject\node_modules\prettier\index.js:31134:12)
at Object.module.exports (myproject\node_modules\vue-loader\lib\template-compiler\index.js:80:23)
@ ./src/App.vue 11:0-354
@ ./src/main.js
@ multi (webpack)-dev-server/client?http://localhost:9000 webpack/hot/dev-server ./src/main.js

由错误可以看出,问题出在prettier。prettier版本为1.3.0。

原因:

vue-loader使用prettier,如下:

code = prettier.format(code, { semi: false })

vue-loader没有指定parser,使用prettier提供的默认parser。而prettier 1.3.0移除了使用默认的parser来解析文件,这样就导致了No parser的错误。

解决方法:

方法一:

在package.json强制设置prettier的版本,降低为prettier1.12.1:

npm install --save-dev prettier@1.12.1
npm run dev

方法二:

vue-loader@13.7.2 和vue-loader@14.2.3是已经修复了,等待发布新版可以解决,修复内容如下:

code = prettier.format(code, { semi: false, parser: 'babylon' })

指定了parser为babylon。

参考: