Language-tools: Fehler: Die Verwendung der Auto-Subscription-Syntax für ein Geschäft, das im Skript context = "module" definiert wurde, führt zu einem Fehler.

Erstellt am 2. März 2021  ·  6Kommentare  ·  Quelle: sveltejs/language-tools

Schauen Sie sich die Test -Komponente in der folgenden REPL an:
https://svelte.dev/repl/4859affa8c1c436783a9d9a6d537c903?version=3

Ein Geschäft wird in einem context="module" -Skript-Tag erstellt und im Markup mit einem Dollarzeichen $ vorangestellt. Es funktioniert wie erwartet. Der gleiche Code in VS Code zeigt jedoch einen Fehler an:

image

Beachten Sie, dass es ordnungsgemäß funktioniert und kompiliert. Mit anderen Worten, der Compiler gibt keine Fehler aus. Es muss also die Svelte VS Code-Erweiterung sein, die das Problem darstellt. Im Grunde erkennt sie keinen Speicher, der im context="module" -Skript definiert wurde, richtig und führt dazu, dass ein roter Schnörkel unter $count hier.

Außerdem wird das rote Schnörkel nur angezeigt, wenn das Attribut lang="ts" auf dem Tag <script> vorhanden ist.

Ich würde es begrüßen, wenn dies bald behoben werden kann.

Fixed bug

Hilfreichster Kommentar

Die Verwendung der Auto-Subscription-Syntax für ein Geschäft, das im Skript context = "module" definiert wurde, sollte ab der VS-Code-Erweiterung 104.6.0 / svelte-check 1.2.1 keinen Fehler mehr ergeben

Alle 6 Kommentare

  1. Konnte das gleiche Problem.
    Error: Cannot find name '$username'. Did you mean 'username'? (ts) wenn username in context="module" .

image

  1. Beim Ausführen von svelte-check ist noch ein Fehler aufgetreten:
> svelte-check --ignore src/node_modules/<strong i="15">@sapper</strong>

/src/routes/my/test.svelte:2:2
Hint: '$username' is declared but its value is never read. (ts)
<script lang="ts">
  import { username } from './_store';

Code:
image

Ausführung:

    "svelte": "^3.35.0",
    "svelte-check": "^1.2.0",
    "typescript": "^4.2.2"

@fivemru Ist der Screenshot aber korrekt? Denn wie es scheint, definieren Sie username im Skript-Tag context="module" sondern in einer separaten Datei.

@fivemru Ist der Screenshot aber korrekt? Denn wie es scheint, definieren Sie username im Skript-Tag context="module" sondern in einer separaten Datei.

Der Screenshot ist für den 2. Fall. Fügte noch einen für den 1 ..
Im zweiten Fall erscheint der Fehler nicht in vscode, sondern tritt beim Ausführen von svelte-check auf

@fivemru Oh okay. Ich habs.

Der zweite Fehler hat nichts damit zu tun. Man könnte argumentieren, dass es richtig ist, weil man nur in den Laden schreibt und ihn nie liest. Wenn Sie $username = .. ausführen, weisen Sie Svelte an, diesen Shop zu abonnieren, aber Sie verwenden ihn nie. In diesem Fall ist username.set(..) die bessere Option. Trotzdem verstehe ich, dass dies verwirrend ist, so dass wir versuchen können, diesen Hinweis zu entfernen.

Die Verwendung der Auto-Subscription-Syntax für ein Geschäft, das im Skript context = "module" definiert wurde, sollte ab der VS-Code-Erweiterung 104.6.0 / svelte-check 1.2.1 keinen Fehler mehr ergeben

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen