您如何安装和运行 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/mocha
。 sudo npm install -g mocha
得到我 /usr/local/bin/mocha
。如果这在您的环境中无法正常工作,则可能是一个错误,或者只是 mocha 未更新以支持节点 0.7.*。关于您的弃用警告,exists
和 existsSync
在节点 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 上运行测试后无法清除数据库
使用 Node NOT io.js 在 Mocha 测试中使用 jQuery