使用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。
参考:
-
Don't default to the JavaScript parser
-
fix: default parser was removed from prettier
-
vue webpack template missing parser