【问题标题】:understanding the source of vscode squiggly lines了解vscode波浪线的来源
【发布时间】:2016-12-22 06:19:56
【问题描述】:

我用 ES7 属性初始化器打开了一个 js 文件,得到了波浪线:

class AppContainer extends Component {
  static propTypes = {
    history: PropTypes.object.isRequired,
    routes: PropTypes.object.isRequired,
    store: PropTypes.object.isRequired
}

错误提示:

[js] 'property declarations' can only be used in a .ts file.

当然,我很好奇如何解决这个问题。但我更好奇如何调试导致此错误的原因?这是一些编辑器更令人沮丧的部分之一,了解是什么决定了您的代码是错误的。

是 VS 还是插件?短绒?编译器?

我确实看到了this question,但这似乎只适用于 es6。 this question 也是关于 eslint 插件,而不是核心 vs 代码。

至于修复它,我确实为 jsconfig.json 找到了一些建议,并尝试将 compilerOptions 设置为目标 es7(不要去那里)。看起来您添加了特定的 eslint 设置,但同样,谁赢了?棉绒?内部编译器?

那么,两个问题:

  1. 您如何知道哪个扩展程序触发了错误(vscode、linter、jsx 等...)?
  2. 如何解决这个问题?

谢谢

【问题讨论】:

  • 也许,但只是第 2 部分。我更好奇如何发现错误来自哪里(什么模块/扩展)。例如,如果核心引擎说它是一个错误,但 linter 说不,那么谁赢了?

标签: visual-studio-code


【解决方案1】:

这是一个很好的问题。

这是一些编辑器最令人沮丧的部分之一,了解是什么决定了您的代码是错误的。

希望能帮上忙。 (免责声明我在 VS Code 团队工作)

  1. 您如何知道哪个扩展程序触发了错误(vscode、linter、jsx 等...)?

linting 标识符位于 [ ] 中,在您的情况下,js 用于标识 VS Code 中内置的 JavaScript 语言服务。

语言服务(在构建时代码名为 Salsa)提供 JavaScript 和 TypeScript 语言服务功能,包括 linting。这就是错误错误地指出“'属性声明'只能在 .ts 文件中使用”的原因。

对于 eslint 错误,您会在错误消息的前缀中看到 [eslint]

  1. 如何解决这个问题?

首先,您需要使用 VS Code 1.6 附带的最新稳定 TypeScript 版本。要升级到 TypeScript 2.0,请参阅doc(总结如下)。

npm install typescript@2.0.2 

将此添加到您的设置文件中(假设这是tsserver.js 的正确路径)

{
   "typescript.tsdk": "node_modules/typescript/lib"
}

根据此Github Issue comment,将其添加到您的jsconfig.json 文件中。

{
  "compilerOptions": {
        "experimentalDecorators": true
   }
}

这应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2017-11-10
    • 2018-02-04
    • 2022-12-07
    • 1970-01-01
    • 2017-03-22
    • 2022-12-18
    • 1970-01-01
    • 2012-06-02
    相关资源
    最近更新 更多