Language-tools: 错误:对在context =“ module”脚本中定义的商店使用自动订阅语法会产生错误。

创建于 2021-03-02  ·  6评论  ·  资料来源: sveltejs/language-tools

查看以下REPL中的Test组件:
https://svelte.dev/repl/4859affa8c1c436783a9d9a6d537c903?version=3

context="module"脚本标签中创建了一个商店,并在标记中使用了前面带有美元符号$商店。 它按预期工作。 但是,VS Code中完全相同的代码显示错误:

image

请注意,它可以正常工作并进行编译,换句话说,编译器不会出错。 因此问题必须出在Svelte VS Code扩展上,基本上它不能正确识别context="module"脚本中定义的任何商店,结果导致红色的波浪状出现在$count在这里。

另外,只有当<script>标签上具有lang="ts"属性时,红色的波浪形才会出现。

如果能尽快解决此问题,我将不胜感激。

Fixed bug

最有用的评论

对于在context =“ module”脚本中定义的商店使用自动订阅语法,从VS Code扩展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时还有一个错误:
> 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

屏幕截图适用于第二种情况。 为第1个添加了一个。
在第二种情况下,错误未在vscode中出现,但在运行svelte-check时就存在

@fivemru哦,好的。 知道了。

第二个错误是无关的。 有人会说这是正确的,因为您只写信给商店,却从未读过。 通过执行$username = ..您告诉Svelte订阅该商店,但是您从不使用它。 在这种情况下, username.set(..)是更好的选择。 我仍然认为这令人困惑,因此我们可能会考虑删除该提示。

对于在context =“ module”脚本中定义的商店使用自动订阅语法,从VS Code扩展104.6.0 / svelte-check 1.2.1起,不再应该产生错误。

此页面是否有帮助?
0 / 5 - 0 等级