mocha运行NPM测试但不是常规的mocha CLI命令

Col*_*tes 6 mocha.js node.js npm

我试图理解在这种情况下我做错了什么.我有一个Node.js项目,我的package.json中包含以下内容

  "scripts": {
    "test": "mocha --recursive ./src/setup/*.js ./test/**/*.js"
  },
  "dependencies": {
     "mocha": "^2.2.5"
  }
Run Code Online (Sandbox Code Playgroud)

当我运行'npm test'时,mocha测试正确运行:

$ npm test (successful run)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行mocha命令时,我的package.json就在那里

$ mocha --recursive ./src/setup/*.js ./test/**/*.js"
Run Code Online (Sandbox Code Playgroud)

这个错误:

-sh: mocha: command not found
Run Code Online (Sandbox Code Playgroud)

我没有全局安装mocha,我只通过npm安装到这个特定项目.

如果我在全局安装mocha,那么它可以工作.当我只在当前目录的node_modules中安装了mocha时,为什么它不起作用,但它与'npm test'一起使用?

bea*_*der 8

npm脚本自动将mocha添加到PATH:

如果依赖于定义可执行脚本的模块(如测试套件),那么这些可执行文件将添加到PATH以执行脚本.

https://docs.npmjs.com/misc/scripts#path

  • FWIW,这些脚本通常位于`./ node_modules/.bin`中,您可以将其添加到`$ PATH`变量中. (4认同)