【发布时间】:2015-11-08 22:52:13
【问题描述】:
我刚刚安装了 WebStorm 11 并创建了一个新项目,但是 WebStorm 说 require() 需要 describe 方法:
我已经添加了确定类型 mocha 库,范围是测试目录(该文件所在的目录)。
【问题讨论】:
标签: javascript node.js mocha.js webstorm
我刚刚安装了 WebStorm 11 并创建了一个新项目,但是 WebStorm 说 require() 需要 describe 方法:
我已经添加了确定类型 mocha 库,范围是测试目录(该文件所在的目录)。
【问题讨论】:
标签: javascript node.js mocha.js webstorm
编辑:如 cmets 中所述,此问题中解决的实际问题实际上是 IntelliJ 15 / WebStorm 11 中的错误(请参阅https://youtrack.jetbrains.com/issue/WEB-18768)。我在下面留下答案,因为很多人在搜索提供的解决方案时来到这里。
公认的答案是解决问题的大锤方法。更好的解决方案是为测试目录启用 mocha-DefinitelyTyped 库。这不仅会消除错误检查,还会提供更好的语法高亮显示。
来自检查的描述:
使用在外部定义自己的全局符号的库时 它们可见的 JavaScript 代码(例如 Mocha 中的
describe()),它是 建议你添加对应的 TypeScript 类型定义 在首选项中将文件作为 JavaScript 库 |语言和框架 | JavaScript |图书馆。
导航到上面提到的首选项部分,“首选项 |语言和框架 | JavaScript |库”,并检查 mocha-DefinitelyTyped 库是否在列表中。
如果@types/mocha(以前叫mocha-DefinitelyTyped)不在列表中,点击Download…按钮,在'TypeScript community stubs'部分找到'mocha',选择它,然后点击Download and Install :
该库在列表中仅命名为 mocha,但在导入后将转换为 @types/mocha(在 2019 年初之前,它将转换为 mocha-DefinitelyTyped)。
一旦你有 mocha-DefinitelyTyped,取消选中它的 Enabled 复选框。让它完全检查将在全球范围内启用它,即使在测试之外也是如此,这是不准确的。相反,我们将管理其范围,使其仅在您的测试目录中启用。单击Manage Scopes… 按钮,找到您的测试目录,单击Library 列,然后选择“mocha-DefinitelyTyped”条目。请参阅下面的屏幕截图。
【讨论】:
typings 目录,我现在从 WebStorm 引用它,但是每个依赖项需要 1-2 分钟来设置。
I've added the definitely-types mocha library and the scope is for the test directory。通过修复链接到正确答案的youtrack.jetbrains.com/issue/WEB-18768,问题在 2016.x 中得到解决
这是第 11 版中引入的新检查 - 它检查代码中使用的模块是否通过 require() 语句引用。实际上,这种检查对于 mocha 测试是多余的(“描述”和其他东西不需要明确要求,因为它们是由 Mocha 添加到全局范围的)。您可以禁用此检查或将其禁止用于“描述”、“它”等(请参阅https://www.jetbrains.com/webstorm/help/suppressing-inspections.html)。 另一种选择:创建一个排除您的规范文件的自定义范围(设置/外观和行为/范围),然后选择此范围进行“缺少 require() 语句”检查(设置/编辑器/检查/Javascript/Node.js)。
相关票证:WEB-18768
【讨论】:
目前 Webstorm 2017.3 中存在一个错误,该错误会阻止通过“首选项 | 安装 Javascript 库”。语言和框架 | JavaScript |图书馆 |下载并安装”方法。
在此处对其进行跟踪,最新的 EAP(抢先体验预览版)(在撰写本文时为 Webstorm 2017.3.2)修复了该问题。 https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FWEB-29725
我在墙上撞了好几个小时,希望这对其他人有所帮助。
【讨论】:
有一个非常简单的解决方法可以为您和项目中的所有其他开发人员解决问题:
在文件顶部添加以下行:
const { describe, it, before, beforeEach, afterEach, after } = require('mocha');
【讨论】: