138

我有一个包含一些Jasmine规范的node.js项目。根据jasmine-node的要求,规范位于 spec/ 子目录中,并具有 .spec.coffee 扩展名。

当我在WebStormbeforeEach IDE 中打开我的一个规范文件时,所有对和的调用都以蓝色波浪下划线显示,describeit带有工具提示:“未解析的函数或方法 it()”。因此,即使我使用的是3.0 EAP并且它应该有一定数量的 Jasmine 支持,但它并不会自动发现这是一个 Jasmine 规范文件这一事实。

我尝试进入 File > Settings > JavaScript Libraries,并将 Jasmine 添加为库(指定 jasmine-2.0.0.rc1.js 的路径),然后转到 Usage Scope 子页面并在“项目”旁边的下拉列表,但这没有效果 - Jasmine 方法仍然显示为未解决。

我如何告诉 WebStorm spec 子目录中的所有文件和/或扩展名为 .spec.coffee 的所有文件都是 Jasmine 测试,并让它识别这些测试正在使用的 Jasmine API?

4

7 回答 7

241

您可以在 Webstorm/PHPStorm/Idea 中使用预定义的 JS 库存根

  • 打开文件>设置...
  • 选择语言和框架> JavaScript > 库
  • 点击下载...

JavaScript 库设置

  • 切换到TypeScript 社区存根
  • 找到karma-jasmine(原名jasmine)(如果这不起作用,请尝试jasmine代替)
  • 点击下载并安装

在此处输入图像描述

我将此设置与 Jasmine 2.0 一起使用

于 2014-03-26T12:06:57.760 回答
30

在带有 webstorm 2016.1.1 的 Mac 上,我执行了以下操作:

  1. 打开首选项(webstorm->preference 或 [command + ,] )
  2. 转到库和框架 -> javascript -> 库
  3. 下载
  4. 从列表中选择“茉莉花-DefinitelyTyped”

茉莉花支持添加到 webstorm

于 2016-04-26T11:55:34.717 回答
6

请注意,如果您在 WebStorm 中使用 JSHint 等代码质量工具,添加全局 jasmin/karma-jasmine 库并不能消除 JSHint 错误。

您需要通过 WebStorm 的菜单系统(Lang & Frameworks>JavaScript>Code Quality Tools>JSHint)访问 JSHint 设置,然后单击复选框以使其知道它在哪个环境中运行。

JSHint 设置

于 2015-06-09T20:17:03.030 回答
4

这也可能是由于缺少依赖项造成的(如果您使用 TypeScript 进行开发)。

确保您已安装@types/jasmine

npm install --save-dev @types/jasmine
于 2017-12-21T18:06:09.120 回答
4

使用TypeScript(和 Angular2),您只需要在 WebStorm 设置中启用 TypeScript 编译器...

设置 > 语言和设置 > TypeScript ...

在编译器标题下勾选...

启用 TypeScript 编译器...

(我还点击了使用 tsconfig.json 单选)

茉莉花方法现在将被识别

于 2016-09-12T14:24:30.720 回答
2

如果您在使用生成项目后遇到此问题,Angular CLI请转到File -> Settings -> Languages & Frameworks -> JavaScript -> Libraries并检查{your-project-name}/node_modules.

于 2016-09-20T04:09:33.853 回答
0

为了找到这个问题的答案,我在我的项目根目录上运行了DiffMerge,并在 Webstorm 中创建了一个新的 Angular CLI 项目,该项目正确地检测到了 jasmine 类型。

我发现我的项目tsconfig.json中的andtsconfig.spec.json文件定义了and ,而另一个项目没有。typeRootstypes

在此处输入图像描述

typeRoots选项的行为是:

如果指定了 typeRoots,则仅包含 typeRoots 下的包。

Types行为类似。

打字稿文档继续说:

默认情况下,所有可见的“@types”包都包含在您的编译中。任何封闭文件夹的 node_modules/@types 中的包都被认为是可见的。

所以,对于我的项目,这种行为对我来说已经足够好了。从我的和文件中删除typeRoots立即解决了这个问题。typestsconfig.jsontsconfig.spec.json

是的,茉莉花typestsconfig.spec.json. 是的,它被设置为延长tsconfig.json

在这种情况下,没关系。有一天,它刚刚停止工作。可能是由于 Typescript 升级,但我不能肯定。如果有人知道为什么,请在下面发表评论,我很好奇。

于 2021-09-25T15:40:58.687 回答