【发布时间】:2017-03-17 10:51:36
【问题描述】:
我一整天都在努力让它工作,但没有任何运气,所以如果有人能发出一些光,将不胜感激。
我正在尝试设置使用 ES6 文件以及使用 Webpack 的 Vue 的环境。
我已经安装了所有依赖项,并创建了以下文件:
webpack.config.js
module.exports = {
entry: './resources/assets/source/js/app.js',
output: {
filename: 'app.js'
},
devtool: 'source-map',
resolve: {
alias: {
'vue$': 'vue/dist/vue.js'
}
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
},
{
test: /\.vue$/,
loader: 'vue'
}
]
}
};
gulpfile.js
var gulp = require('gulp'),
webpack = require('webpack-stream');
gulp.task('script', () => {
"use strict";
return gulp.src('./resources/assets/source/js/app.js')
.pipe(webpack(require('./webpack.config.js')))
.pipe(gulp.dest('./public/assets/js/'));
});
gulp.task('default', ['script']);
资源/资产/source/js/app.js
var Vue = require('vue');
import Alert from './components/Alert.vue';
new Vue({
el: '#app',
components: { Alert },
ready() {
alert('ready');
}
});
resources/assets/source/js/components/Alert.vue
<template>
<div :class="alertClasses" v-show="show">
<slot></slot>
<span class="Alert__close" @click="show == false">x</span>
</div>
</template>
<script>
export default {
props: ['type'],
data() {
return {
show: true
};
},
computed: {
alertClasses() {
var type = this.type;
return {
'Alert': true,
'Alert--Success': type == 'success',
'Alert--Error': type == 'error'
};
}
}
};
</script>
当我运行 gulp 时,所有内容都被捆绑和编译,但是当我在浏览器中运行它时,我得到 Uncaught SyntaxError: Unexpected token import 指向 resources/assets/source/js/app.js 文件中的行。
经过数小时试图找出可能导致它的原因后,我已经没有什么想法了,并且正处于放弃的边缘,因此非常感谢任何帮助。
【问题讨论】:
-
你使用 Babel 和 Webpack 的哪个版本?
-
它的 webpack-stream@3.2.0 和 babel-loader@6.2.7
-
尝试从
'/\.(js|vue)$/'中删除引号 - 当您希望它作为正则表达式时,它可能会被解析为字符串。 -
通过在
webpack.config.js中的loaders列表中添加另一个元素,将vue-loader 用于.vue文件而不是Babel。 -
你能用你的最新配置更新帖子吗?
标签: javascript ecmascript-6 webpack vue.js vue-component