查看以下REPL中的Test
组件:
https://svelte.dev/repl/4859affa8c1c436783a9d9a6d537c903?version=3
在context="module"
脚本标签中创建了一个商店,并在标记中使用了前面带有美元符号$
商店。 它按预期工作。 但是,VS Code中完全相同的代码显示错误:
请注意,它可以正常工作并进行编译,换句话说,编译器不会出错。 因此问题必须出在Svelte VS Code扩展上,基本上它不能正确识别context="module"
脚本中定义的任何商店,结果导致红色的波浪状出现在$count
在这里。
另外,只有当<script>
标签上具有lang="ts"
属性时,红色的波浪形才会出现。
如果能尽快解决此问题,我将不胜感激。
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
。
屏幕截图适用于第二种情况。 为第1个添加了一个。
在第二种情况下,错误未在vscode中出现,但在运行svelte-check时就存在
@fivemru哦,好的。 知道了。
第二个错误是无关的。 有人会说这是正确的,因为您只写信给商店,却从未读过。 通过执行$username = ..
您告诉Svelte订阅该商店,但是您从不使用它。 在这种情况下, username.set(..)
是更好的选择。 我仍然认为这令人困惑,因此我们可能会考虑删除该提示。
对于在context =“ module”脚本中定义的商店使用自动订阅语法,从VS Code扩展104.6.0 / svelte-check
1.2.1起,不再应该产生错误。
最有用的评论
对于在context =“ module”脚本中定义的商店使用自动订阅语法,从VS Code扩展104.6.0 /
svelte-check
1.2.1起,不再应该产生错误。