【问题标题】:WebStorm can not find ts-node/module and describe definition when setup with Mocha, Chai and TypeScript使用 Mocha、Chai 和 TypeScript 设置时,WebStorm 找不到 ts-node/module 和描述定义
【发布时间】:2021-03-24 10:27:29
【问题描述】:

我在使用 Mocha/Chai 和 TypeScript 设置 WebStorm 时遇到问题。

我安装了 mocha 和 chai 在我的 package.json 中设置了一个测试脚本,就像这样

"test": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha -r ts-node/register 'tests/**/*.ts'"

当我运行npm test 时,测试运行并且一切正常。

但是 WebStorm 无法识别 describeit。即使我正在运行 WebStorm 2020.3,我也遵循了 this post 中的解决方案,但没有成功。

此外,当我在 WebStorm 中使用跑步者时,我收到以下错误:

错误:错误:找不到模块“ts-node/register”

在 WebStorm 的 Runner 配置中,我添加了以下内容:

  • 环境变量:env TS_NODE_COMPILER_OPTIONS='{"module": "commonjs" }'
  • 额外的摩卡咖啡选项:mocha -r ts-node/register

然而这也没有帮助。

我错过了什么?

[编辑]

感谢 lena 的评论,我发现 Mocha 包指向了错误的项目,所以我修复了它。不幸的是,我现在收到此错误:

【问题讨论】:

  • 请分享您的运行配置截图
  • 确保运行配置中的工作目录与您运行 npm 脚本的目录相同(即您的 package.json 所在的目录)
  • 不幸的是,我现在又遇到一个错误...
  • 可能与解析TS_NODE_COMPILER_OPTIONS变量值有关...如果从环境变量中删除该选项,问题是否仍然存在?
  • 当我删除它时,我得到SyntaxError: Cannot use import statement outside a module

标签: typescript mocha.js webstorm chai


【解决方案1】:

尝试更改环境变量的定义方式 - 删除值周围的单引号,这就是 mocha 所抱怨的。只需将其设置为TS_NODE_COMPILER_OPTIONS={"module":"commonjs"}:

对我来说很好用

【讨论】:

  • 谢谢解决了,但是describeit 仍然无法识别
  • 在编辑器中哪里没有被识别?那是因为 mocha 包没有暴露它的全局变量,所以让静态代码分析识别这些方法的唯一方法是安装类型 (npm i @types/mocha)。见jetbrains.com/help/webstorm/…
  • 在编辑器中是的。我安装了@types/mocha,我也跟着这个stackoverflow.com/questions/33599983/…,它类似于你发布的那个。但是在我的情况下,described 是红色下划线,当我将鼠标悬停在它上面时,我得到:" ESLint: 'describe' is not defined.(no-undef)"
  • 错误来自 linter (ESLint),而不是来自 IDE。您必须通过相应地设置 env 来配置 linter,请参阅 eslint.org/docs/user-guide/configuring/…
猜你喜欢
  • 2019-08-10
  • 2019-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 2018-05-18
  • 2022-07-23
相关资源
最近更新 更多