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

Posted

技术标签:

【中文标题】您如何安装和运行 Mocha,Node.js 测试模块?安装后获取“mocha:找不到命令”【英文标题】:How do you install and run Mocha, the Node.js testing module? Getting "mocha: command not found" after install 【发布时间】:2012-04-01 02:51:24 【问题描述】:

我无法让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

【问题讨论】:

使用节点 0.6.12、npm 1.1.4 并执行 npm install mocha,我得到了预期的 ./node_modules/.bin/mochasudo npm install -g mocha 得到我 /usr/local/bin/mocha。如果这在您的环境中无法正常工作,则可能是一个错误,或者只是 mocha 未更新以支持节点 0.7.*。关于您的弃用警告,existsexistsSync 在节点 0.7.1 中从 path 移动到 fs 我降级到 Node.js 0.6.12,在我的 PATH 中添加了“./node_modules/.bin”,一切正常。 【参考方案1】:

在进一步阅读和上面 Linus G Thiel 的确认后,我发现我不得不这样做,

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

【讨论】:

我在全局和本地安装了节点 0.8.12 和 mocha(用于不同的项目),并且它们正在工作。所以不需要降级节点。对于本地安装的 mocha,只需确保您的 PATH 设置如上,或直接从您的脚本(Makefile 或“scripts”标签)调用它。 我在本地和全局安装了 Mocha,但在路径中找不到 (Win8)。我必须手动将相对于我的项目的 './node_modules/.bin' 文件夹添加到我的 PATH 中,重新启动控制台,然后输入 'mocha' 就可以了。不理想,但可以快速破解它的工作。也许如果你有一个在本地安装 mocha 的***位置,然后链接到那个 PATH 以便你可以在其他地方使用它。【参考方案2】:

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

npx mocha <args>

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

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

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

你可以阅读更多关于 npx here


现在,如果您不想直接调用 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

【讨论】:

@michael.kebe 不,你不需要指定使用本地 mocha 的路径,npm 已经在 $PATH 中添加了“./node_modules/.bin”,所以它会使用默认为本地版本。 我认为命令应该是 node node_modules/mocha/bin/mocha 而不是 node node_modules/.bin/mocha @MinaLuke 也可以,但这是个坏主意,/node_modules/.bin/module-binary-name 是 npm 在您的依赖项中放置二进制文件快捷方式的地方,您不应直接在依赖项的源中引用文件,因为这可能会在下一个版本中中断。【参考方案3】:

对于窗户:

包.json

  "scripts": 
    "start": "nodemon app.js",
    "test": "mocha"
  ,

然后运行命令

npm run test

【讨论】:

【参考方案4】:

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

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

在运行或执行我正在尝试的 mocha 测试时

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

但我收到以下错误:

'Mocha' 未被识别为内部或外部命令

所以,在尝试了一切之后,结果只是将系统变量下的环境变量的路径设置为:

C:\Program Files\nodejs\

它成功了:)

【讨论】:

我知道这是旧评论,但我能够成功安装 mocha。谢谢 Dheeraj【参考方案5】:

要从终端使用mocha 命令运行Mocha,您需要在this 机器上全局安装mocha:

npm install --global mocha

然后 cd 到您的 projectFolder/test 并运行 mocha yourTestFileName.js


如果您想让mocha 在您的package.json 中作为开发依赖项可用:

npm install --save-dev mocha

然后将mocha 添加到package.json 内的脚本中。

"scripts": 
    "test": "mocha"
  ,

然后在终端中运行npm test

【讨论】:

以上是关于您如何安装和运行 Mocha,Node.js 测试模块?安装后获取“mocha:找不到命令”的主要内容,如果未能解决你的问题,请参考以下文章

在我的 node.js 应用程序中使用 mongodb 和 mongoose 在 Mocha 和 Chai 上运行测试后无法清除数据库

在我的 node.js 应用程序中使用 mongodb 和 mongoose 在 Mocha 和 Chai 上运行测试后无法清除数据库

使用mocha编写node服务单元测试

使用 Node NOT io.js 在 Mocha 测试中使用 jQuery

使用 mocha 进行测试时的 Node.js CronJob 执行

node.js 学习笔记1-mocha