在Visual Studio代码中失去对柏树的智能感知

时间:2018-09-20 22:31:31

标签: javascript visual-studio-code cypress

我遇到了一个非常奇怪的问题。

我创建了一个非常简单的赛普拉斯项目,仅是示例测试用例,而没有任何其他devDependencies赛普拉斯。

当我第一次在Visual Studio代码中打开该项目时,将鼠标悬停在某个方法上后,我会看到带有一些签名帮助的弹出窗口,然后右键单击选择为“转到定义”的方法,便可以打开该文件。 Able to see Signature help

在我编写代码“ cy。”之后发生了奇怪的事情,它应该给我智能代码建议,但是对任何方法都没有任何建议和鼠标悬停,“签名”帮助消失了,右键单击该方法选择了“转到定义”我得到“找不到“ XXX”的定义” Lost intellisense

我问了很多开发人员,但没人能回答,请帮忙,谢谢!

4 个答案:

答案 0 :(得分:5)

请检查文件顶部是否有triple-slash directive,例如

/// <reference types="Cypress" />

在这种情况下,请尝试在cypress文件夹中添加tsconfig.json。从赛普拉斯文档中,具有以下配置的tsconfig.json应该可以智能完成代码。

{
  "compilerOptions": {
    "allowJs": true,
    "baseUrl": "../node_modules",
    "types": [
      "cypress"
    ]
  },
  "include": [
    "**/*.*"
  ]
}

答案 1 :(得分:1)

我的行为与您在9月23日的评论中描述的相同。我意识到这是由我的自定义cypress命令引起的。在链接我的自定义命令之前,我将获得代码完成,但之后没有。

为解决此问题,我在cypress/support中添加了一个包含以下内容的index.d.ts文件:

declare namespace Cypress {
  interface Chainable<Subject> {
    /**
     * Log in via UI
     * @example
     * cy.login(username: string, password: string)
     */
    login(): Chainable<any>
    /**
     * Log in via API
     * @example
     * cy.apiLogin()
     */
    apiLogin(): Chainable<any>

    /**
     * Wait for viewer to load
     * @example
     *  cy.waitForFirstLoad()
     */
    waitForFirstLoad(): Chainable<any>

    /**
     * Log out
     * @example
     *  cy.logout()
     */
    logout(): Chainable<any>
  }
}

我还对cypress/tsconfig.json进行了如下修改:

{
    "compilerOptions": {
        "allowJs": true,
        "baseUrl": "../node_modules",
        "types": ["cypress", "../support"]
    },
    "include": ["**/*.*"]
}

希望有帮助

答案 2 :(得分:0)

您可以覆盖赛普拉斯的配置文件,以使“智能代码完成”功能在整个项目中都可用。

要执行此操作,请转到 projectName / cypress.json 并添加以下内容:

{
    "$schema": "https://on.cypress.io/cypress.schema.json"
}

参考:Cypress Documentation

答案 3 :(得分:0)

经过数小时的艰苦研究,我发现,如果您不想在每个文件的顶部都包含三斜杠指令,则可以在index.d.ts文件中执行此操作:< / p>

declare global {
  namespace Cypress {
    interface Chainable<Subject> {
      /**
       * Should login
       * @param user
       * @example cy.login()
       */
      login(user?: string): Chainable<any>;
    }
  }
}

这是修复我的VS Code IntelliSense的原因,因此我的自定义命令将自动完成,将鼠标悬停在它们上将显示JSDocs。