如何安装和运行Mocha(Node.js测试模块)?安装后出现“ mocha:找不到命令”


89

我在让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)

如何只用一个命令执行测试?Vows似乎允许您,但是我听说Mocha是更好的选择,我似乎无法使其正常工作。

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

编辑:

我在跑,

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

2
使用节点0.6.12,npm 1.1.4并执行npm install mocha,我得到./node_modules/.bin/mocha了预期的结果。sudo npm install -g mocha抓住我/usr/local/bin/mocha。如果这在您的环境中无法正常运行,则可能是错误,或者只是未更新摩卡以支持节点0.7。*。关于你的弃用警告,existsexistsSync从移动pathfs的节点0.7.1。
Linus Thiel 2012年

我降级到Node.js 0.6.12,在我的PATH中添加了“ ./node_modules/.bin”,一切正常。
Stephen Melrose 2012年

Answers:


177

从npm 5.2.0开始,如果您运行以下命令,npm附带有一个新命令“ npx”,它使此操作变得更加简单:

npx mocha <args>

注意:可选参数会转发到正在执行的命令(在这种情况下为mocha)

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

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

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


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

您不希望库测试根据计算机设置而失败(将Mocha作为全局,全局Mocha版本等),使用跨平台工作的本地Mocha的方法是:

node node_modules/.bin/mocha

npm为该特殊文件夹上的依赖项中的所有二进制文件添加别名。最后,npm将在运行npm脚本时自动将node_modules / .bin添加到PATH,因此在package.json中,您可以执行以下操作:

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

并用

npm test

1
+1,我从前一段时间就一直在使用摩卡,但我没有意识到。这应该是公认的答案!
gihanchanuka 2015年

6
@ michael.kebe不,您无需指定该路径即可使用本地mocha,npm已在$ PATH中添加了“ ./node_modules/.bin”,因此默认情况下它将使用本地版本。
2015年

我相信命令应该是节点node_modules / mocha / bin / mocha而不是节点node_modules / .bin / mocha
Mina Luke

3
@MinaLuke也可以使用,但不是一个好主意,/node_modules/.bin/{module-binary-name}因为npm是在依赖项中放置二进制文件快捷方式的地方,您不应直接在依赖项的源文件中引用文件,因为在下一个版本中它可能会中断。

1
@DougBarbieri不错,这是个老答案,我将更新以提及npx,谢谢!
杰(Benja)

18

经过进一步的阅读,并得到上面的Linus G Thiel的确认,我发现我只需要,

  • 降级到Node.js 0.6.12
  • 还有一个
    • 将Mocha安装为全局
    • 添加./node_modules/.bin到我的PATH

4
我在全局和本地安装了针对不同项目的节点0.8.12和mocha,它们正在工作。因此无需降级节点。对于本地安装的摩卡,只需确保您的PATH设置如上,或者直接从您的脚本(Makefile或“ scripts”标记)中调用它即可。
梁启超东

1
我在本地和全局安装了Mocha,但在路径(Win8)中找不到。我必须将相对于我的项目的'./node_modules/.bin'文件夹手动添加到PATH,重新启动控制台,然后键入'mocha'即可。不理想,但是可以快速破解以使其正常工作。也许如果您有一个顶级位置可以在本地安装Mocha,则可以链接到该PATH,以便可以在其他地方使用它。
阿里


1

为mocha安装节点模块时,我尝试了以下命令

  • npm安装
  • npm安装摩卡
  • npm install --save-dev摩卡
  • npm install mocha -g#也可以全局安装

在运行或执行我尝试的摩卡测试时

  • 摩卡测试
  • npm运行测试
  • 摩卡测试test \ index.test.js
  • npm测试

但我得到以下错误:

无法将“ Mocha”识别为内部或外部命令

因此,尝试了所有方法之后,只需将系统变量下的环境变量路径设置为:

C:\ Program Files \ nodejs \

它起作用了:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.