如何让 WebStorm 识别 Jasmine 的方法?

我有一个 Node Js项目,其中包含一些 茉莉规范。规范在 spec/子目录中,并且具有。按照 Jasmine-node的要求,spec.coffee 扩展。

当我在 网络风暴 IDE 中打开我的一个 spec 文件时,所有对 beforeEachdescribeit的调用都会在工具提示中以蓝色弯弯曲曲的下划线显示: “未解决的函数或方法 it ()”。所以即使我使用的是 3.0 EAP,它应该是 有一些茉莉花的支持,它也不会自动识别出这是一个 Jasmine 规范文件。

我尝试进入 File > Settings > JavaScript Library,并添加 Jasmine 作为库(指定 Jasmine-2.0.0的路径)。Js) ,然后进入使用范围子页面,在“ Project”旁边的下拉列表中检查“ Jasmine”,但是没有效果—— Jasmine 方法仍然显示为未解析。

我如何告诉 WebStorm 一个 spec 子目录中的所有文件,以及/或所有具有。Coffee 扩展,是 Jasmine 测试,并且它能识别那些测试使用的 Jasmine API 吗?

41853 次浏览

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

  • 打开 文件 > 设定..。
  • 选择 语言及框架 > JavaScript > 图书馆
  • 点击 下载..。

JavaScript Library settings

  • 切换到 TypeScript 社区存根
  • 查找 因果报应茉莉花(原名为 Jasmine)(如果这不起作用,请尝试使用 Jasmine)
  • 点击 下载及安装

enter image description here

我正在使用 Jasmine 2.0的这个设置

注意,如果您正在使用一个代码质量工具,比如 JSHint 和 WebStorm,那么添加全局 jasmin/karma-jasmine 库并不能消除 JSHint 错误。

你需要通过 WebStorm 的菜单系统访问 JSHint 设置(Lang & Framework > JavaScript > Code Quality Tools > JSHint) ,然后点击复选框,让它知道自己在哪个环境中运行。

JSHint setting

在 webstorm 2016.1.1的 Mac 上,我做了以下事情:

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

Jasmine support added to webstorm

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

设置 > 语言及设置 > 打字脚本..。

在编译器的标题勾下..。

启用类型脚本编译器..。

(我还点击了 use tsconfig.json 单选框)

茉莉花方法现在将被认可

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

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

请确保已安装 @types/jasmine

npm install --save-dev @types/jasmine

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

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

enter image description here

typeRoots选项的行为是:

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

Types的行为方式与此类似。

打印文档接着说:

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

所以,对于我的项目来说,这种行为对我来说已经足够好了。从我的 tsconfig.jsontsconfig.spec.json文件中删除 typeRootstypes解决了这个 马上

是的,茉莉花是在 tsconfig.spec.jsontypes下申报的。是的,它被设置为扩展 tsconfig.json

在这种情况下,这不重要。有一天它突然停止工作了。可能是因为打字机升级了,但我不能确定。如果有人知道为什么,请在下面留言,我很好奇。