Beim Importieren eines Pakets in ES6: „Fehler beim Auflösen des Modulbezeichners „vue““
Lesezeit: 7 Minuten
Ich versuche, einigen Vue-Tutorials zu folgen, und ich kann Vue derzeit nicht in eine importieren .js Datei und importieren Sie diese Datei dann in my index.html. So importiere ich das Skript in meine index.html:
In der Browserkonsole erhalte ich folgenden Fehler:
Nicht erfasster TypeError: Fehler beim Auflösen des Modulbezeichners „vue“. Relative Verweise müssen entweder mit „https://stackoverflow.com/“, „./“ oder „../“ beginnen.
@boussadjrabrahim – Danke. Ehrlich gesagt bin ich mir nicht sicher. Ich tat npm install vue tun können import Vue from 'vue' ohne dass sich ESLint beschwert. Aber ich kann mich nicht erinnern, installiert zu haben vue cli. Ich habe eine package.json Datei im Stammordner des Projekts, die enthält vue als Abhängigkeit, nachdem ich installiert habe vue mit npm
– Nullhedge
2. Oktober 2018 um 16:25 Uhr
Sie zeigen nur den Import von Vue. Wie haben Sie das vue.js-Skript in Ihren HTML-Code geladen?
– Aaron Digulla
16. September 2019 um 8:22 Uhr
Evgeni
Die Art und Weise, wie Sie ES-Module verwenden können in Ihrem Browser direkt (Stand Juni 2020) ist somit:
Verwenden Sie die ESM-Version Ihrer Abhängigkeiten (diejenige, die import anstatt require). Beispielsweise ist die Vue ESM-Version verfügbar unter: https://cdnjs.cloudflare.com/ajax/libs/vue/3.0.0-beta.14/vue.esm-browser.js
Lassen Sie Ihren Browser mit dem Experimentellen arbeiten importmap Merkmal. Karten importieren ist eine neue Web-Empfehlung, die noch nicht in Mainstream-Browsern unterstützt wird. https://wickg.github.io/import-maps/#import-map In Chrome ist dies unter chrome://flags#enable-experimental-productivity-features
(Neueste Chrome-Versionen haben dies unter verschoben chrome://flags#enable-experimental-web-platform-features)
Erstelle ein importmap in Ihrer HTML-Datei. Es funktioniert nur mit Inline <script> Tags im Moment in Chrome. Zum Beispiel:
Wenn Sie mit arbeiten ES6 dann Sie sollte nicht manuelles Einfügen Ihrer main.js hinein index.html – Dies wird von erledigt Webpaket. Eigentlich geht das einfachste Tutorial für Vue so:
npm install -g vue-cli
vue init webpack my_project
npm starte dev (und beginne mit der Entwicklung – Ergebnis ist verfügbar unter http://localhost:8080)
npm run build (Ergebnis ist in der ./dist Ordner Ihres Projekts
Außerdem sollten Sie Vue so importieren
Vue aus ‘vue’ importieren;
und nicht so
importiere Vue aus ‘../../node_modules/vue’;
BEARBEITEN
Okay, wenn Sie darauf bestehen, den Anfängerpfad zu gehen und keine Webpack- und Single-File-Vue-Komponenten zu verwenden – dann sollten Sie so beginnen:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<title>My beginners project</title>
<link rel="stylesheet" type="text/css" href="https://stackoverflow.com/assets/css/styles.css" />
</head>
<body>
<div id="app">
<router-view></router-view>
</div>
<!-- templates for your components -->
<template id="login">
<div>test</div>
</template>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
<script src="https://unpkg.com/[email protected]/dist/vue-router.js"></script>
<!-- code for your components -->
<script type="text/javascript" src="/app/login.js"></script>
<!-- Vue Root component should be last -->
<script type="text/javascript" src="/app/app.js"></script>
</body>
</html>
Und dein /app/app.js wird so aussehen:
var badRoute = Vue.component('bad-route', {
template: '<div id="bad_route"><h1>Page Not Found</h1><p>Sorry, but the page you were trying to view does not exist.</p></div>'
});
var vue_router = new VueRouter({
base: '/app'
, mode: 'hash'
, routes: [{
path: "https://stackoverflow.com/"
, redirect: '/login'
}, {
path: '/login'
, component: loginForm
, name: 'LOGIN'
}, {
path: '*', // should be last, otherwise matches everything
component: badRoute
, name: 'NOT FOUND'
}]
});
// Main application
var vue_app = new Vue({
router: vue_router
, })
.$mount('#app');
Und dein /app/login.js Komponente sieht so aus:
var loginForm = Vue.component('login-form', {
template: '#login', // should match the ID of template tag
data: function() {
var a = {
username: ''
, password: ''
, };
return a;
}
, methods: {}
});
Es tut mir Leid. Ich bin mir sicher, dass mir etwas fehlt, aber ich verstehe nicht, wie dies meine Frage beantwortet. Wenn ich einfach den manuellen Import der main.js script-Tag, dann passiert nichts.
– Nullhedge
2. Oktober 2018 um 17:13 Uhr
Außerdem: Ich mache import Vue from 'vue' aber ich bekomme einen Syntaxfehler in der JS-Datei “Uncaught SyntaxError: Unexpected identifier” in der Zeile, in der ich sie so importiere.
– Nullhedge
2. Oktober 2018 um 17:15 Uhr
Ich werde versuchen, die Schritte zu erklären. In Schritt 1 installieren Sie das Vue-CLI-Tool global auf Ihrem Computer. In Schritt 2 verwenden Sie das Tool, um ein leeres Vue-Projekt mithilfe der offiziellen Webpack-Vorlage zu erstellen. In Schritt 3 starten Sie einen Entwicklungs-Webserver, damit Sie sofort sehen können, wie Ihre neuen Webanwendungen aussehen (durch Öffnen der angegebenen URL in Ihrem Browser). Hier schreibst du deinen Code hinein main.jsdann in App.vue und dann in Ihren anderen Einzeldatei-Vue-Komponenten (falls Sie solche erstellen). In Schritt 4 erstellen Sie Ihr Projekt und stellen es bereit ./dist Ordner auf Ihr Hosting.
– IVO GELOV
2. Oktober 2018 um 17:23 Uhr
Es tut uns leid. Ich verstehe immer noch nicht, warum das, was ich oben mache, nicht funktioniert. Ich habe vue-cli nicht installiert, weil das offizielle Tutorial ausdrücklich besagt, dass Anfänger diesen Weg nicht gehen sollten. Warum kann ich nicht verwenden import Vue from 'vue' in meinem main.js Datei und lassen Sie diese einfach richtig rendern? (Ich “beschwere” mich nicht bei Ihnen, das war meine eigentliche Frage)
Tun Sie dies, bevor Sie Ihr eigenes Skript importieren, und dann Vue wird definiert und muss nicht erneut importiert werden. Importieren Sie Ihr Skript ohne das Attribut “Modul”. Im Skript können Sie Folgendes ausführen:
var x = new Vue({
el: '#myApp',
... all the other stuff ...
})
Dies setzt voraus, dass Sie irgendwo auf Ihrer HTML-Seite Folgendes haben:
<div id=myApp></div>
10100800cookie-checkBeim Importieren eines Pakets in ES6: „Fehler beim Auflösen des Modulbezeichners „vue““yes
arbeitest du mit webpack oder vue cli 3 …?
– Boussadjra Brahim
2. Oktober 2018 um 16:23 Uhr
@boussadjrabrahim – Danke. Ehrlich gesagt bin ich mir nicht sicher. Ich tat
npm install vue
tun könnenimport Vue from 'vue'
ohne dass sich ESLint beschwert. Aber ich kann mich nicht erinnern, installiert zu habenvue cli
. Ich habe einepackage.json
Datei im Stammordner des Projekts, die enthältvue
als Abhängigkeit, nachdem ich installiert habevue
mitnpm
– Nullhedge
2. Oktober 2018 um 16:25 Uhr
Sie zeigen nur den Import von Vue. Wie haben Sie das vue.js-Skript in Ihren HTML-Code geladen?
– Aaron Digulla
16. September 2019 um 8:22 Uhr