次のREPLのTest
コンポーネントを見てください。
https://svelte.dev/repl/4859affa8c1c436783a9d9a6d537c903?version=3
ストアはcontext="module"
スクリプトタグで作成され、マークアップでドル記号$
付加されて使用されています。 期待どおりに動作します。 ただし、VSCodeのまったく同じコードはエラーを示しています。
正しく動作し、コンパイルされることに注意してください。言い換えると、コンパイラはエラーを出しません。 したがって、問題はSvelte VS Code拡張機能である必要があります。基本的に、 context="module"
スクリプトで定義されているストアを正しく認識せず、その結果、 $count
下に赤い波線が表示されます。
また、 lang="ts"
属性が<script>
タグに存在する場合にのみ、赤い波線が表示されます。
これがすぐに修正されることができれば幸いです。
Error: Cannot find name '$username'. Did you mean 'username'? (ts)
username
作成された場合、 context="module"
。> 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';
コード:
バージョン:
"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以降でエラーが発生することはなくなりました。
最も参考になるコメント
context = "module"スクリプトで定義されたストアに自動サブスクリプション構文を使用しても、VSCode拡張機能104.6.0 /
svelte-check
1.2.1以降でエラーが発生することはなくなりました。