Webpack vue 报错
Webpack vue error
我在全球安装了 webpack,在本地安装了 vue 和加载器,并尝试在全球安装它们。当我 运行 webpack
时,我一直收到这个错误
Module parse failed: /Users/joebob/Development/vue-test/node_modules/babel-loader/index.js!/Users/joebob/Development/vue-test/src/main.js Line 1: Unexpected token
You may need an appropriate loader to handle this file type.
| import Vue from 'vue';
main.js
import Vue from 'vue'
import App from './app.vue'
new Vue({
el: 'body',
components: { App }
})
配置
module.exports = {
entry: './src/main.js',
output: {
path: './dist',
publicPath: 'dist/',
filename: 'build.js'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/
},
{
test: /\.vue$/,
loader: 'vue'
}
]
},
vue: {
loaders: {
js: 'babel'
}
}
}
package.json
{
"name": "vue-test",
"version": "1.0.0",
"dependencies": {
"vue": "^1.0.16"
},
"devDependencies": {
"babel-core": "^6.1.2",
"babel-loader": "^6.1.0",
"babel-plugin-transform-runtime": "^6.1.2",
"babel-preset-es2015": "^6.1.2",
"babel-preset-stage-0": "^6.1.2",
"babel-runtime": "^5.8.0",
"webpack": "^1.12.2",
"css-loader": "^0.23.0",
"style-loader": "^0.13.0",
"vue-loader": "^7.3.0",
"vue-html-loader": "^1.0.0",
"vue-hot-reload-api": "^1.2.0"
}
}
不确定我错过了什么
您缺少 es-2015 转换。
Pre-6.x,Babel 默认启用某些转换。然而,Babel 6.x 并未附带任何启用的转换。您需要明确告诉它对 运行 进行哪些转换。最简单的方法是使用预设,例如 ES2015 预设。您可以使用
安装它
npm install babel-preset-es2015 --save-dev
然后设置 babel-loader 来使用它:
配置:
module.exports = {
entry: './src/main.js',
output: {
path: './dist',
publicPath: 'dist/',
filename: 'build.js'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
query: {
presets: ['es2015']
}
},
{
test: /\.vue$/,
loader: 'vue'
}
]
},
vue: {
loaders: {
js: 'babel'
}
}
}
参考:
我在全球安装了 webpack,在本地安装了 vue 和加载器,并尝试在全球安装它们。当我 运行 webpack
时,我一直收到这个错误Module parse failed: /Users/joebob/Development/vue-test/node_modules/babel-loader/index.js!/Users/joebob/Development/vue-test/src/main.js Line 1: Unexpected token
You may need an appropriate loader to handle this file type.
| import Vue from 'vue';
main.js
import Vue from 'vue'
import App from './app.vue'
new Vue({
el: 'body',
components: { App }
})
配置
module.exports = {
entry: './src/main.js',
output: {
path: './dist',
publicPath: 'dist/',
filename: 'build.js'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/
},
{
test: /\.vue$/,
loader: 'vue'
}
]
},
vue: {
loaders: {
js: 'babel'
}
}
}
package.json
{
"name": "vue-test",
"version": "1.0.0",
"dependencies": {
"vue": "^1.0.16"
},
"devDependencies": {
"babel-core": "^6.1.2",
"babel-loader": "^6.1.0",
"babel-plugin-transform-runtime": "^6.1.2",
"babel-preset-es2015": "^6.1.2",
"babel-preset-stage-0": "^6.1.2",
"babel-runtime": "^5.8.0",
"webpack": "^1.12.2",
"css-loader": "^0.23.0",
"style-loader": "^0.13.0",
"vue-loader": "^7.3.0",
"vue-html-loader": "^1.0.0",
"vue-hot-reload-api": "^1.2.0"
}
}
不确定我错过了什么
您缺少 es-2015 转换。
Pre-6.x,Babel 默认启用某些转换。然而,Babel 6.x 并未附带任何启用的转换。您需要明确告诉它对 运行 进行哪些转换。最简单的方法是使用预设,例如 ES2015 预设。您可以使用
安装它npm install babel-preset-es2015 --save-dev
然后设置 babel-loader 来使用它:
配置:
module.exports = {
entry: './src/main.js',
output: {
path: './dist',
publicPath: 'dist/',
filename: 'build.js'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
query: {
presets: ['es2015']
}
},
{
test: /\.vue$/,
loader: 'vue'
}
]
},
vue: {
loaders: {
js: 'babel'
}
}
}
参考: