J'essaie de créer une application de démonstration avec Vue.js. Ce que je reçois est une erreur étrange que Vue n'est pas défini.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue JS Intro</title>
</head>
<body>
<div id="demo">
<p>{{message}}</p>
<input v-model="message">
</div>
<script type="JavaScript" src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.18/vue.min.js"></script>
<script>
var demo = new Vue({
el: '#demo',
data: {
message: 'Hello Vue.js!'
}
})
</script>
</body>
</html>
Qu'est-ce qui m'a manqué ici? Ce n'est pas un problème de CDN car j'ai également téléchargé la bibliothèque sur le site officiel, je l'ai utilisée et j'ai obtenu le même résultat.
index.html: 15 Uncaught ReferenceError: Vue n'est pas définie
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.18/vue.min.js"></script>
et que
<script>
var demo = new Vue({
el: '#demo',
data: {
message: 'Hello Vue.js!'
}
});
</script>
type="JavaScript"
devrait être type="text/javascript"
(ou plutôt rien du tout)essayez de corriger type="JavaScript"
à type="text/javascript"
dans votre balise de script vue.js ou supprimez-le simplement. Les navigateurs modernes prendront les balises de script en javascript par défaut.
J'ai eu cette erreur mais comme indéfini à cause de la façon dont j'ai inclus les fichiers js
Initailly j'avais
<script src="~/vue/blade-account-update-credit-card-vue.js" asp-append-version="true"></script>
<script src="~/lib/vue/vue_v2.5.16.js"></script>
à la fin de ma page .cshtml Erreur GOT Vue non définie mais plus tard, je l'ai changée en
<script src="~/lib/vue/vue_v2.5.16.js"></script>
<script src="~/vue/blade-account-update-credit-card-vue.js" asp-append-version="true"></script>
et comme par magie cela a fonctionné. Je suppose donc que la vue js doit être chargée au-dessus du .vue
Parfois, le problème peut être si vous import
cela ressemble à ceci:
const Vue = window.vue;
cela peut écraser la référence Vue
originale.
J'avais besoin d'ajouter le script ci-dessous à index.html dans la balise HEAD.
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
Mais dans votre cas, puisque vous n’avez pas index.html, ajoutez-le à votre balise HEAD à la place.
Donc c'est comme:
<!doctype html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
...
</body>
</html>
J'ai trouvé deux problèmes principaux avec cette mise en œuvre. Premièrement, lorsque vous importez le script vue.js
, vous utilisez type="JavaScript"
en tant que content-type
, ce qui est faux. Vous devez supprimer ce paramètre type
car, par défaut, les balises script
ont text/javascript
comme valeur par défaut content-type
. Ou alors, remplacez simplement le paramètre type
par le content-type
correct, qui est type="text/javascript"
.
Le deuxième problème est que votre script est incorporé dans le même fichier HTML, ce qui signifie qu'il peut être déclenché en premier et que le fichier vue.js
n'a probablement pas encore été chargé. Vous pouvez résoudre ce problème en utilisant un fragment jQuery$(function(){ /* ... */ });
ou en ajoutant une fonction javascript comme indiqué dans cet exemple:
// Verifies if the document is ready
function ready(f) {
/in/.test(document.readyState) ? setTimeout('ready(' + f + ')', 9) : f();
}
ready(function() {
var demo = new Vue({
el: '#demo',
data: {
message: 'Hello Vue.js!'
}
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="demo">
<p>{{message}}</p>
<input v-model="message">
</div>