I keep getting error whenever I want to build a file. What is a reason of it? It seems that .vue file is not recognizable by webpack, but webpack configuration file looks properly. webpack error
bundle-app.js 189 kB 1 [emitted] app
+ 12 hidden modules
ERROR in Unexpected token >
@ ./app/application.js 7:11-31
webpack.config.js
var path = require("path");
module.exports = {
context: path.join(__dirname, 'src'),
entry: {
app: './app/application.js'
},
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle-[name].js'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
include: /src/,
query: {
presets: ["es2015"]
}
},
{
test: /\.vue$/,
loader: 'vue',
},
]
},
vue: {
loaders: {
js: 'babel'
}
}
}
package.json
"devDependencies": {
"webpack": "~2.2.1",
"babel-core": "~6.23.1",
"babel-loader": "~6.3.1",
"babel-preset-es2015": "~6.22.0",
"sass-loader": "~6.0.0",
"node-sass": "~4.5.0",
"extract-text-webpack-plugin": "~2.0.0-rc.3",
"vue-template-compiler": "~2.2.4",
"css-loader": "~0.27.3",
"vue-loader": "~11.1.4"
},
"dependencies": {
"vue": "~2.2.4"
}
}
app/application.js
import Vue from 'vue'
import App from './app.vue'
new Vue({
el: 'body',
component: { App }
})
app/app.vue
<template>
<div id="app">
</div>
</template>
<script>
export default {
data () {
return {
msg: 'Hello from vue-loader!'
}
}
}
vue-loader is a loader for webpack that allows you to author Vue components in a format called Single-File Components (SFCs): <template> <div class="example">{{ msg }}</div> </template> <script> export default { data () { return { msg: 'Hello world!' } } } </script> <style> .example { color: red; } </style>
You have SCSS variables in one file that you want to make available to your Vue components. The good news is that the Vue CLI makes it incredibly easy to support writing SCSS, and with Vue's single file components you can simply add lang="scss" to the <style> block ( docs).
There are some extra configs that you need to do, to loader work properly.
I strongly recommend you using the vue-cli
for setup all working okay.
npm install -g vue-cli
vue init webpack-simple hello
cd hello
npm install
npm run dev
Basically, at your webpack.config.js
, you forgot/made errors in:
1- Loader name should be loader: 'vue-loader'
instead of loader: 'vue'
.
2- Create an key called resolve
, with the content:
alias: {
vue$: 'vue/dist/vue.common.js',
}
3- And this key vue: ...loader: babel
, isn't necessary.
In projects that use vue, individuals do not recommend configuring webpack and vue-loader separately. You can directly use vue official scaffolding, vue-cli. Do not have to consider these configurations, automatically configured.vue-cli
If you just started learning Vue, here's an entry-level demo. Although it is only a small application, but it covers a lot of knowledge points (vue2.0 + vue-cli + vue-router + vuex + axios + mysql + express + pm2 + webpack), including front-end, back-end, database and other sites Some of the necessary elements, for me, learning great significance, would like to encourage each other!
Vue Demo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With