您如何安装和运行 Mocha,Node.js 测试模块?安装后获取“mocha:找不到命令”

新手上路,请多包涵

我无法让 Mocha 按预期工作,我很想说有记录,但是(似乎)没有太多关于实际运行的文档。

我已经使用 npm (全局和本地)安装了它,每次运行它时我都会得到:

 $ mocha
mocha: command not found

好的,所以我认为它不在我的 PATH 中,所以我尝试直接运行它,

 $ ./node_modules/mocha/bin/mocha
execvp(): No such file or directory

最后,我尝试点击另一个 bin 文件,得到了,

 $ ./node_modules/mocha/bin/_mocha
path.existsSync is deprecated. It is now called `fs.existsSync`.

  .

  ✔ 1 tests complete (1ms)

我怎样才能用一个命令来执行我的测试? 誓言 似乎让你,但我听说摩卡是更好的选择,我似乎无法让它正常工作。

对我在第三次尝试中遇到的错误有什么想法吗?

编辑:

我在跑,

  • Ubuntu 11.10 64 位
  • 节点.js 0.7.5
  • npm 1.1.8
  • 摩卡咖啡 0.14.1
  • 应该是 0.6.0

原文由 Stephen Melrose 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 589
2 个回答

从 npm 5.2.0 开始,npm 包含一个新命令“npx”,如果你运行它,它会变得更简单:

 npx mocha <args>

注意:可选参数被转发到正在执行的命令(本例中为 mocha)

这将自动从您本地安装的 mocha 中选择可执行的“mocha”命令(始终将其添加为开发依赖项,以确保您和其他所有人始终使用正确的依赖项)。

请注意,如果您没有安装 mocha,此命令将自动获取并使用最新版本,这对于某些工具(例如脚手架)非常有用,但对于您可能想要的某些依赖项可能不是最推荐的固定到特定版本。

您可以在 此处 阅读有关 npx 的更多信息


现在,如果不是直接调用 mocha,而是要定义一个自定义 npm 脚本,一个可能调用其他 npm 二进制文件的别名……

您不希望您的库测试失败,具体取决于机器设置(mocha 作为全局、全局 mocha 版本等),使用跨平台工作的本地 mocha 的方法是:

 node node_modules/.bin/mocha

npm 为您在该特殊文件夹上的依赖项中的所有二进制文件放置别名。最后,npm 会在运行 npm 脚本时自动将 node_modules/.bin 添加到 PATH 中,所以在你的 package.json 中你可以这样做:

 "scripts": {
  "test": "mocha"
}

并调用它

npm test

原文由 Benja 发布,翻译遵循 CC BY-SA 4.0 许可协议

在进一步阅读和上面 Linus G Thiel 的确认之后,我发现我只需要,

  • 降级到 Node.js 0.6.12
  • 或者,
    • 将 Mocha 安装为全局
    • 添加 ./node_modules/.bin 到我的 PATH

原文由 Stephen Melrose 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题