“mocha”未被识别为内部或外部命令 - supertest未自动安装mocha

5
我需要对我用NodeJS编写的rest api进行单元测试。 为此,我需要使用supertest npm包。 我正在按照this tutorial article中的步骤实现单元测试功能。
现在,在这篇文章中提到,mocha已经包含在supertest本身中,因此无需单独安装它。 因此,我只需使用npm install --save-dev supertest来安装supertest

但是,当我在我的package.json中添加这行代码 - "test": "mocha",并运行npm test时,它会报错,说'mocha'不是内部或外部命令。我需要运行npm install --save-dev mocha才能成功运行。但为什么我需要单独包含mocha,如果这是正常运行的方式,为什么在该文章或supertest的npm主页上没有提到?


1
Mohit - 看看这个链接是否有帮助:https://dev59.com/rVcP5IYBdhLWcg3wi6kA - Vimal Maheedharan
谢谢@VimalMahi,我查看了这个帖子,但不幸的是没有找到我需要的内容。 - Mohit Bhardwaj
1个回答

4
我访问了npmjs上的Supertest页面并查看了依赖项。 Mocha被列为开发依赖项。这意味着在创建supertest时使用了Mocha,但是supertest不需要Mocha才能正常运行。 当我在Node.js项目上工作时,我会将某些软件包安装为开发依赖项。这些软件包可以用于测试(Mocha)或linting(Standard)。这意味着在部署项目时,它不需要这些软件包才能正常运行。
此外,您可以使用npm list命令查看已安装的模块。我刚刚安装了supertest并运行了npm list。这是supertest的结构: enter image description here 如您所见,Mocha未列出
进一步地,运行npm ls mocha的输出结果是: $ npm ls mocha nodetest@1.0.0 E:\Nodetest -- (empty) 当我运行npm ls supertest时,输出如下: $ npm ls supertest nodetest@1.0.0 E:\Nodetest -- supertest@3.3.0 为什么文章中说mocha可用?可能在supertest的早期版本中包含了它作为依赖项。

非常感谢您的努力,@Sansolo。那么,这意味着我需要安装 mocha 来使用 supertest 运行测试用例,对吗?我有点困惑,因为在他们的 npm 页面上,他们也使用 mocha 语法,但没有提到需要单独安装它,但可能这是显而易见的。 - Mohit Bhardwaj
@Mohit Bharadwaj,我查看了这篇文章,它确实说supertest包含mocha。也许之前的版本是这样的。你能把这个标记为答案吗? :) - SanSolo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接