【问题标题】:How do you install and run Mocha, the Node.js testing module? Getting "mocha: command not found" after install您如何安装和运行 Mocha,Node.js 测试模块?安装后获取“mocha:找不到命令”
【发布时间】: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”,一切正常。

标签: node.js mocha.js


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 2012-07-23
      • 2018-10-25
      • 1970-01-01
      相关资源
      最近更新 更多