Mocha在WebStorm 11中描述了“require()缺失”

时间:2015-11-08 22:52:13

标签: javascript node.js mocha webstorm

我刚刚安装了WebStorm 11并创建了一个新项目,但WebStorm表示require()方法需要describe

require() call is missing

我添加了明确类型的mocha库,范围是针对测试目录(该文件所在的目录)。

5 个答案:

答案 0 :(得分:90)

编辑:如评论中所述,此问题中解决的实际问题实际上是IntelliJ 15 / WebStorm 11中的错误(请参阅https://youtrack.jetbrains.com/issue/WEB-18768)。我将在下面留下答案,因为在搜索所提供的解决方案时,很多人都来到这里。

接受的答案是解决问题的大锤方法。更好的解决方案是为测试目录启用mocha-DefinitelyTyped库。这不仅可以消除错误的检查,还可以提供更好的语法突出显示。

从检查的描述:

  

使用在外部定义自己的全局符号的库时   它们是可见的JavaScript代码(例如Mocha中的describe()),它是   建议您添加相应的TypeScript类型定义   在Preferences |中将文件作为JavaScript库语言与框架|   JavaScript |库。

导航到上面引用的首选项部分'首选项|语言与框架| JavaScript | Libraries',并检查mocha-DefinitelyTyped库是否在列表中。

如果@types/mocha(以前名为mocha-DefinitelyTyped)不在列表中,请点击Download…按钮,在“TypeScript社区存根”部分找到“mocha”,然后选择它,然后单击下载并安装:

‘mocha’ library to import, shown in the Download Library window

该列表在列表中仅以mocha命名,但在导入后将转换为@types/mocha(在2019年初之前,它将转换为mocha-DefinitelyTyped)。

一旦你有了mocha-DefinitelyTyped,取消选中它的Enabled复选框。完全检查它将使全局,甚至在测试之外,这将是不准确的。相反,我们将管理其范围仅在您的测试目录中启用。单击Manage Scopes…按钮,找到您的测试目录,单击Library列,然后选择'mocha-DefinitelyTyped'条目。请参见下面的屏幕截图。

screenshot of the JavaScript Libraries Usage Scopes preferences window

答案 1 :(得分:10)

这是第11节中介绍的新检查 - 它检查代码中使用的模块是否通过require()语句引用。事实上,这种检查对于摩卡测试来说是多余的('描述'以及其他不需要明确要求的东西,因为它们被Mocha添加到全球范围内)。您可以禁用此检查,也可以将其设为“描述”,“#”等等(请参阅https://www.jetbrains.com/webstorm/help/suppressing-inspections.html)。 另一种选择:创建一个自定义范围,排除您的规范文件(设置/外观和行为/范围),然后选择此范围为'缺少require()语句'检查(设置/编辑/检查/ Javascript / Node.js)。

相关票证:WEB-18768

答案 2 :(得分:1)

Webstorm 2017.3目前存在一个错误,它阻止通过“首选项”安装Javascript库语言与框架| JavaScript |图书馆|下载并安装'method。

此处正在跟踪,最新的EAP(早期访问预览版)(撰写本文时的Webstorm 2017.3.2)解决了这个问题。 https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FWEB-29725

我把头撞在墙上几个小时,希望这有助于其他人。

答案 3 :(得分:0)

有一个非常简单的解决方法可以为您和项目中的所有其他开发人员解决此问题:

在文件顶部添加以下行:

const { describe, it, before, beforeEach, afterEach, after } = require('mocha');

答案 4 :(得分:-1)

如果您已经在全球范围内安装了mocha,但是仍然无法正常运行,请尝试删除所有“运行/调试”配置。

它将更新npm运行程序,希望它能解决问题。

enter image description here