2016-10-16 15 views
6

Używam konfiguracji Laravel Vue i wciągam pakiet Laravel Elixir, pakiet Webpack i laravel-elixir-vue-2.vue 2.0 Nie można zamontować komponentu: nie zdefiniowano funkcji szablonu lub renderowania

Szukałem w kilku innych SO pytania i wiem, że to zwykle problem nie przedstawieniu autonomiczną wersję vue.js

Jednak laravel-eliksir-vue-2 pakiet aliasy vue do jednostkowego Wersja umożliwiająca załadowanie szablonów z plików .vue. Wciąż otrzymuję ten błąd za każdym razem:

[Vue:Warn] vue 2.0 Failed to mount component: template or render function not defined. (found in component <top> at ../resources/assets/js/components/top.vue) 

widzę, że vue.js jest wciągana z vue/dist/vue.js 0598: 2611 w konsoli.

Czy ktoś może zobaczyć, czego mi brakuje?

app.js

import Vue from 'vue' 
import top from './components/top.vue' 

new Vue({ 
el: '#app', 
components: { top } 
}) 

//I've also tried this: 

// new Vue({ 
// components: { 
// top 
// }, 
// render: h => h(top), 
// }).$mount('#app') 

top.vue

<template> 
    <div class="top"> 
    <p>hi</p> 
    </div> 
</template> 
<script> 
export default {}; 
</script> 

index.blade.php

<div> 
    <div id="app"> 
<top></top> 
    </div> 
</div> 
{!! HTML::script('js/app.js') !!} 

package.json

{ 
    "private": true, 
    "scripts": { 
    "prod": "gulp --production", 
    "dev": "gulp watch" 
}, 
"devDependencies": { 
    "bootstrap-sass": "^3.3.0", 
    "gulp": "^3.9.1", 
    "laravel-elixir": "^6.0.0-9", 
    "laravel-elixir-vue-2": "^0.2.0", 
    "laravel-elixir-webpack-official": "^1.0.2" 
    } 
} 

gulp.js

var elixir = require('laravel-elixir'); 
elixir.config.sourcemaps = true; 
require('laravel-elixir-vue-2'); 

elixir(function(mix) { 
    mix.webpack('app.js', 'public/assets/js'); 
}); 

Edycja: zmiana

Zmiana gulp.js Syntaktyka stały mój błąd.

var elixir = require('laravel-elixir') 
require('laravel-elixir-vue-2') 

elixir(mix => { 

    mix.webpack('app.js'); 

    mix.styles([ 
    "normalize.css", 
    "main.css" 
    ]); 

}); 

edit: dodałem domyślną eksportowej {}; do skryptu szablonu

+0

Nie pokazał nam 'top' komponent . –

+0

Jest tam jako drugi fragment kodu: top.vue – retrograde

+0

Spróbuj zarejestrować komponent za pomocą 'Vue.Component (name, url)' zanim użyjesz go. Naprawdę nie rozumiem, dlaczego powinieneś dostać ten błąd. –

Odpowiedz

7

Podobnie jak mój komentarz w pytaniu, miałem ten sam problem. W moim przypadku miałem dwa eliksir połączenia tak:

elixir(mix => { 
    mix.browserSync({ 
     proxy: 'example.dev', 
     open: false 
    }); 
}); 

elixir(mix => { 
    mix.sass('app.scss'); 
    mix.webpack('app.js'); 
}); 

I nie wiem dlaczego, ale te dwa połączenia eliksir łamią WebPACK. mogę zmienić gulpfile do:

elixir(mix => { 
    mix.sass('app.scss'); 
    mix.webpack('app.js'); 
    mix.browserSync({ 
     proxy: 'example.dev', 
     open: false 
    }); 
}); 

@retrograde, thx za podpowiedź w komentarzu :)

Edycja: Zobacz ten Laravel Elixir Issue

+1

Dzięki za umieszczenie go w formularzu odpowiedzi. Mam nadzieję, że to oszczędza godzin frustracji. – retrograde

+0

Nie ma za co! –

+0

Problem i to naprawił, dziwny problem. –

0

Nawet jeśli składnik ma żadnych opcji, jej script tag jeszcze eksportować pustego obiektu, tak że vue-loader można wstrzykiwać funkcję render do niego:

<template> 
    <div class="top"> 
    <p>hi</p> 
    </div> 
</template> 

<script> 
    export default {}; 
</script> 
+0

Wprowadziłem tę zmianę, ale nadal otrzymuję błąd. – retrograde

2

Hi mieli ten problem przed gdy odtwarzanie z VueJs 2.0 RC myślę co zrobiłem było stworzenie webpack.config.js w katalogu projektu i dodaj następujący:

module.exports = { 
    resolve: { 
     alias: { 
      vue: 'vue/dist/vue.js', 
     } 
    } 
}; 

również nie wiem, czy miałoby to znaczenia, ale przed próbą powyżej może dodać "vue": "^ 2.0.1", do pliku package.json i zrobić npm install (lub po prostu npm install vue)

+0

Pakiet npm "laravel-elixir-vue-2" zawiera odniesienie do aliasu. A mój plik vue to vue/dist/vue.js (zaznaczone w konsoli). Niestety nadal nie udało mi się tego uruchomić. – retrograde

Powiązane problemy