javascript - 'mocha' 不被识别为内部或外部命令 - mocha 不会自动安装 supertest

标签 javascript node.js npm mocha.js supertest

我需要对用 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 主页上没有提到它?

最佳答案

我去了Supertest page on npmjs并检查了依赖关系。 Mocha 被列为开发依赖项。这意味着在创建超测试时使用了 Mocha,但超测试运行不需要 Mocha。 当我在 Node.js 项目上工作时,我将某些包安装为开发依赖项。这些可以是用于测试 (Mocha) 或 linting (Standard) 的包。这意味着当项目被部署时,它不需要这些包来运行。

此外,您可以使用 npm list 命令查看安装了哪些模块。我刚刚安装了 supertest 并运行了 npm list。这是 super 测试的结构:

enter image description here 如您所见,Mocha 未列出

进一步,运行 npm ls mocha 并输出: $ npm ls mocha Node 测试@1.0.0 E:\Node 测试 -- (空)

当我运行 npm ls supertest 时,输出是: $ npm ls supertest Node 测试@1.0.0 E:\Node 测试 -- supertest@3.3.0

为什么文章说 mocha 可用?可能在 supertest 的早期版本中,它作为依赖包含在内

关于javascript - 'mocha' 不被识别为内部或外部命令 - mocha 不会自动安装 supertest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53647899/

相关文章:

javascript - 如何在没有任何本地服务器的情况下通过单击 index.html 文件来运行 React 应用程序

node.js - Gulp:如何在生产环境中设置不同的 base href

javascript - 如果我将函数体而不是函数名传递给 setTimeout 会发生什么?

angularjs - 表达静态文件

javascript - 从函数内的结果填充数组对象

javascript - eval() 函数中的 Node process.env 变量给出了不同的结果

file - Node js将文件发布到远程服务器上的php api

node.js - npm:为什么版本 "0.1"无效?

javascript - 如何以类似 jQuery 的方式为函数设置选项

javascript - 一次播放一个 YouTube 视频