Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncaught ReferenceError: Vue is not defined when put vue setting in Index.html

Tags:

vue.js

vuejs2

i recently learning about vue

I have this file main.js

import Vue from 'vue/dist/vue.js'
import Buefy from 'buefy'
import 'buefy/lib/buefy.css'
Vue.use(Buefy)

var App = new Vue({
    el: '#app',
    data: {
          message : "It's working"
    }
})

and here is my html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Vue Example</title>
  </head>
  <body>
    <h3 id="app">{{ message }}</h3>
    <script src="dist/build.js"></script>

    <script>

    </script>
  </body>
</html>

It's working. But, now i'm trying to do something with my script. I change main.js (I'm using webpack)

import Vue from 'vue/dist/vue.js'
import Buefy from 'buefy'
import 'buefy/lib/buefy.css'
Vue.use(Buefy)

then my index.html to this

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Vue Example</title>
  </head>
  <body>
    <h3 id="app">{{ message }}</h3>
    <script src="dist/build.js"></script>

    <script>
var App = new Vue({
    el: '#app',
    data: {
        message:"It's not working"
    }
})
    </script>
  </body>
</html>

and i get this error

Uncaught ReferenceError: Vue is not defined

How can i fix this ?

like image 655
YVS1102 Avatar asked Jul 29 '17 11:07

YVS1102


People also ask

Is not defined Vue error?

In this article, you are going to learn about how to fix Uncaught ReferenceError: Vue is not defined. If you have faced this error, you should check the HTML file. In there if you link JavaScript file in the wrong order then write it in the right order and this will fix the problem.

Should always be multi word Vue multi word component names?

📖 Rule Details. This rule require component names to be always multi-word, except for root App components, and built-in components provided by Vue, such as <transition> or <component> . This prevents conflicts with existing and future HTML elements, since all HTML elements are a single word.


1 Answers

If you want to make a new instance of Vue directly in index.html you should either include the library in your index.html:

<script src="https://unpkg.com/[email protected]"></script>

Or you need to assign the Vue to window object in main.js like so:

main.js:

 import Vue from 'vue';
 window.Vue = Vue;

then in index.html you have access to Vue() because it is a global property of window object.

like image 104
ironcladgeek Avatar answered Oct 21 '22 22:10

ironcladgeek