Language-tools: バグ:context = "module"スクリプトで定義されたストアに自動サブスクリプション構文を使用すると、エラーが発生します。

作成日 2021年03月02日  ·  6コメント  ·  ソース: sveltejs/language-tools

次のREPLのTestコンポーネントを見てください。
https://svelte.dev/repl/4859affa8c1c436783a9d9a6d537c903?version=3

ストアはcontext="module"スクリプトタグで作成され、マークアップでドル記号$付加されて使用されています。 期待どおりに動作します。 ただし、VSCodeのまったく同じコードはエラーを示しています。

image

正しく動作し、コンパイルされることに注意してください。言い換えると、コンパイラはエラーを出しません。 したがって、問題はSvelte VS Code拡張機能である必要があります。基本的に、 context="module"スクリプトで定義されているストアを正しく認識せず、その結果、 $count下に赤い波線が表示されます。

また、 lang="ts"属性が<script>タグに存在する場合にのみ、赤い波線が表示されます。

これがすぐに修正されることができれば幸いです。

Fixed bug

最も参考になるコメント

context = "module"スクリプトで定義されたストアに自動サブスクリプション構文を使用しても、VSCode拡張機能104.6.0 / svelte-check 1.2.1以降でエラーが発生することはなくなりました。

全てのコメント6件

  1. 同じ問題に直面しました。
    Error: Cannot find name '$username'. Did you mean 'username'? (ts) username作成された場合、 context="module"

image

  1. svelte-checkの実行時にもう1つエラーがあります。
> 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';

コード:
image

バージョン:

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

@fivemruスクリーンショットは正しいですか? 表示されているように、 context="module"スクリプトタグではなく別のファイルでusernameを定義しているためです。

@fivemruスクリーンショットは正しいですか? 表示されているように、 context="module"スクリプトタグではなく別のファイルでusernameを定義しているためです。

スクリーンショットは2番目のケース用です。 1日にもう1つ追加しました。
2番目のケースでは、エラーはvscodeに表示されませんが、svelte-checkを実行するとエラーが発生します。

@fivemruオーケー。 とった。

2番目のエラーは無関係です。 あなたは店に書くだけで、決してそれを読まないので、それが正しいと主張する人もいるかもしれません。 $username = ..実行すると、Svelteにそのストアをサブスクライブするように指示しますが、使用することはありません。 この場合、 username.set(..)がより適切なオプションです。 それでも、これは紛らわしいので、そのヒントを削除することを検討するかもしれません。

context = "module"スクリプトで定義されたストアに自動サブスクリプション構文を使用しても、VSCode拡張機能104.6.0 / svelte-check 1.2.1以降でエラーが発生することはなくなりました。

このページは役に立ちましたか?
0 / 5 - 0 評価