【发布时间】:2016-11-18 19:16:14
【问题描述】:
使用 Vue 2.0 处理 SPA。我通过 Laravel Elixir、laravel-elixir-webpack-official 和 laravel-elixir-vue-2 将所有模板与来自 .vue 文件的 Webpack 捆绑在一起。我已经审查了几乎所有关于此的现有问题,其中大部分是指需要独立构建或在您的 gulpfile 中调用 elixir 函数两次,据我了解,这两个都不适用。
完整的控制台错误:
[Vue warn]: Failed to mount component: template or render function not defined.
(found in anonymous component at E:\dev\project\resources\assets\js\App.vue)
main.js:
import Vue from 'vue';
var VueResource = require('vue-resource');
Vue.use(VueResource);
import VueRouter from 'vue-router'
Vue.use(VueRouter)
import { sync } from 'vuex-router-sync'
import store from './vuex/store';
import Home from './views/home.vue';
import Toast from './views/toast.vue';
const routes = [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/toast',
name: 'toast',
component: Toast
}
]
const router = new VueRouter({
routes: routes
});
sync(store, router) // done.
import App from './App.vue'
new Vue({
name: 'app',
el: '#app',
store,
router,
render(h) {
return h(App)
}
});
App.vue:
<script>
// App.js
import Header from './components/Header.vue'
import Loading from './components/Loading.vue';
import Messenger from './components/Messenger.vue';
export default {
components: {
Header, Loading, Messenger
}
}
</script>
<template>
<div>
<header></header>
<router-view></router-view>
<loading></loading>
<messenger></messenger>
</div>
</template>
网站通过刀片模板加载,超级简单:
<body>
<div id="app">
</div>
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script src="/js/main.js"></script>
</body>
所有这些,我几乎可以肯定我不需要独立构建。谁能帮我弄清楚这里出了什么问题?
更多信息
如果我打开 Vue devtools,我可以看到根应用程序组件。下面是一个匿名组件,上面有$route。就是这样。
Gulpfile
var elixir = require('laravel-elixir');
require('laravel-elixir-vue-2');
require('elixir-tinypng');
require('laravel-elixir-webpack-official');
var env = require('./env.json');
elixir(function(mix) {
// Image optimization
if(env.tinyPngApiKey) {
mix.tinypng({
key:env.tinyPngApiKey,
sigFile:'.tinypng-sigs',
log:true,
summarize:true
});
// Copy all non compressible images to build
mix.copy('assets/img/*.!(png|jpg)', 'resources/img');
} else {
mix.copy('assets/img/*', 'resources/img');
}
mix.copy('node_modules/font-awesome/fonts', 'public/fonts')
.sass('app.scss')
.webpack('main.js')
.browserSync({
proxy: 'project.dev'
});
});
【问题讨论】:
标签: vue.js laravel-elixir