【发布时间】:2017-11-10 11:54:00
【问题描述】:
我主要是一名 C# 后端开发人员并尝试学习 Vue.js。我使用 Visual Studio 2017 + ASP.NET MVC(作为 API + 一种布局)+ Vue.js + Webpack。.vue 单页组件文件由 vue-loader 加载,.js 文件由babel-loader 与 es2015 预设。
app.js 被 Babel 成功转译为输出 dist/script.js 文件,但无论我使用哪种组合,.vue 文件都会给我语法错误。即使我的navigation.vue 错误绝对为空,我也会遇到同样的错误:
./assets/component/navigation.vue 中的错误
模块构建失败:SyntaxError: Unexpected token {
Task Runner Explorer 内容:
nagivation.vue:
<template>
<div>
{{ greeting }}
</div>
</template>
<script>
export default {
data: {
greeting: 'Hello World'
}
}
</script>
app.js:
import Vue from "../vendor/vue.js";
Vue.component("navigation", require("../component/navigation.vue"));
const app = new Vue({
el: "#app"
});
webpack.config.js:
module.exports = {
entry: "./assets/core/app.js",
output: {
filename: "./dist/script.js"
},
module: {
loaders: [
{
test: /\.js$/,
loader: "babel-loader",
exclude: /node_modules/,
options: {
presets: ["es2015"]
}
},
{
test: /\.vue$/,
loader: "vue-loader"
}
]
},
resolve: {
extensions: ["*", ".js", ".vue"]
},
plugins: [
new NotifierPlugin()
]
};
package.json:
{
"version": "1.0.0",
"name": "helloworld",
"private": true,
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-vue": "^1.2.1",
"clean-webpack-plugin": "^0.1.17",
"webpack": "^3.8.1"
},
"dependencies": {
"babel-core": "^6.26.0",
"babel-eslint": "^8.0.2",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.1",
"css-loader": "^0.28.7",
"eslint": "^4.10.0",
"eslint-cli": "^1.1.1",
"eslint-loader": "^1.9.0",
"eslint-plugin-react": "^7.4.0",
"vue-loader": "^13.5.0",
"vue-router": "^3.0.1",
"vue-template-compiler": "^2.5.3",
"webpack-notifier": "^1.5.0"
}
}
造成这种神秘错误的原因是什么?人们通常如何调试此类错误?
【问题讨论】:
-
你应该已经为 vue github.com/vuejs-templates/webpack 安装了 webpack 模板,这样人们就不会因为它必然会发生配置裸 webpack 和 vue 而跑偏了。
-
@samayo 我试过了,但是这个模板有点矫枉过正。我不需要 node.js 托管和它拥有的许多其他东西。另外,我想了解所有这些事情,这就是为什么我需要自己从头开始,一步一步地做,没有任何预制模板。不过,我会看一下这个模板的配置文件,非常感谢! :)
标签: javascript webpack vue.js