【问题标题】:VS Code not recognizing Jest, underlining with IntellisenseVS Code 无法识别 Jest,用 Intellisense 下划线
【发布时间】:2018-03-31 18:47:16
【问题描述】:

我在使用 Jest 进行测试的 Typescript 项目中使用 VS Code。出于某种原因,VS Code 认为 Jest 全局变量不可用:

我的开发依赖项中安装了 Jest typedef。

"devDependencies": {
    // ...truncated
    "@types/jest": "^20",
    "jest": "^20.0.4",
    "ts-jest": "^20.0.7",
    "ts-node": "^5.0.0",
    "typescript": "~2.4.0"
}

【问题讨论】:

  • 我试图让 npm i @types/jest 和 VSCode 发现 jest 全局对象。尝试重新安装/重启/清除缓存...
  • 你能分享你的.tsconfig吗?
  • 这可能是一个愚蠢的问题,但是您是否导入了您正在使用的对象?另外,这个问题可能会有所帮助:stackoverflow.com/questions/41324636/how-to-import-jest
  • Jest 被设置为一个全局对象,因此不需要在每个测试文件中导入这些函数。

标签: node.js typescript visual-studio-code jestjs


【解决方案1】:

尽管我的devDependencies 中也有@types/jest,但我也曾多次为这个问题苦苦挣扎。

我创建了jest-without-globals 作为一个非常 微型包装器,以支持导入 Jest 的功能而不是依赖全局变量,从而确保变量存在。
它也是用 TypeScript 编写的,确保在导入时输入正确,并且除了导入之外不需要执行任何操作来使类型起作用。

Per the Usage docs,使用起来很简单:

import { describe, it, expect } from 'jest-without-globals'

describe('describe should create a section', () => {
  it('it should checkmark', () => {
    expect('').toBe('')
   })
})

Jest's API 以及jestexpect 中可用的所有函数都可以从jest-without-globals 导入。

【讨论】:

    【解决方案2】:

    这里的正确答案是 typescript 需要在 jest 全局对象对智能感知可见之前为 jest 进行类型声明。

    将此三斜杠指令添加到测试文件的开头:

    /// <reference types="jest" />
    

    【讨论】:

      【解决方案3】:

      我将我的 Typescript 版本升级到 2.8,这个问题就消失了。我会假设这是某种缓存问题。

      【讨论】:

      • 我已经看到使用 Cmd+Shift+P 中的“重新启动 TS 服务器”命令有时会有所帮助。确保我的 tsconfig 文件正在加载并具有正确的设置也很重要,就像这篇文章一样:stackoverflow.com/questions/57874114/…
      猜你喜欢
      • 2021-08-26
      • 2020-09-08
      • 1970-01-01
      • 2022-10-05
      • 2020-08-02
      • 2023-04-08
      • 2022-09-28
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多