Javascript visual studio代码中cypress的intellisense丢失
我遇到了一个非常奇怪的问题 我创建了一个非常基本和简单的cypress项目,只有示例测试用例,没有任何其他的依赖项 当我第一次在VisualStudio代码中打开此项目时,当鼠标悬停到某个方法后,我可以看到一个带有签名帮助的弹出窗口,右键单击选择的方法“转到定义”,我就可以打开该文件。 在我写了一个代码“cy.”之后发生了奇怪的事情,它假设给我智能代码建议,但没有任何建议,鼠标悬停到任何方法签名帮助消失,右键单击选择的方法“转到定义”我得到了“没有为'XXX'找到定义”Javascript visual studio代码中cypress的intellisense丢失,javascript,visual-studio-code,cypress,Javascript,Visual Studio Code,Cypress,我遇到了一个非常奇怪的问题 我创建了一个非常基本和简单的cypress项目,只有示例测试用例,没有任何其他的依赖项 当我第一次在VisualStudio代码中打开此项目时,当鼠标悬停到某个方法后,我可以看到一个带有签名帮助的弹出窗口,右键单击选择的方法“转到定义”,我就可以打开该文件。 在我写了一个代码“cy.”之后发生了奇怪的事情,它假设给我智能代码建议,但没有任何建议,鼠标悬停到任何方法签名帮助消失,右键单击选择的方法“转到定义”我得到了“没有为'XXX'找到定义” 我问过很多开发者,但
我问过很多开发者,但没人能回答,请帮忙,谢谢 请检查您的文件顶部是否有
/// <reference types="Cypress" />
我的行为与你在9月23日的评论中描述的相同。我意识到这是由我定制的柏树命令引起的。在链接我的自定义命令之前,我会得到代码完成,但不是之后 为了解决这个问题,我在
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>
}
}
{
"$schema": "https://on.cypress.io/cypress.schema.json"
}
希望它有帮助您可以覆盖Cypress配置文件,使“智能代码完成”功能在整个项目中都可用 要执行此操作,请转到projectName/cypress.json并添加以下内容:
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>
}
}
{
"$schema": "https://on.cypress.io/cypress.schema.json"
}
参考资料:经过数小时的痛苦调查后,我发现如果您不想在每个文件的顶部包含三重斜杠指令,请在
index.d.ts
文件中执行此操作:
declare global {
namespace Cypress {
interface Chainable<Subject> {
/**
* Should login
* @param user
* @example cy.login()
*/
login(user?: string): Chainable<any>;
}
}
}
声明全局{
名称空间柏树{
可链接接口{
/**
*应该登录吗
*@param用户
*@example.login()
*/
登录(用户?:字符串):可链接;
}
}
}
这就是修复我的VS代码IntelliSense的原因,因此我的自定义命令将自动完成,并将鼠标悬停在上面将显示JSDocs。是的,我有“//”和“tsconfig.json”(你可以在我的屏幕截图中看到它们),奇怪的是我第一次得到了“签名帮助”,但在键入“cy”之后丢失了它。在m的情况下,//引用文件顶部缺少标记。在我添加了它之后,intellisense又出现了。添加了一个“noEmit”:在编译器选项上为true以避免覆盖消息错误,并重新加载VSCode。不需要“//”,只需要tsconfig.json。顺便说一句,对于同一个项目,智能代码建议在WebStorm中运行良好。我认为这只是针对
cypress.json
;它将自动完成并仅在该文件中描述JSON道具。