“npm”如何运行“npm test”?

时间:2013-11-23 15:52:43

标签: node.js npm

我一直认为npm test命令只会启动我在package.json部分scripts: { test: ...}内写的内容。但是当它不起作用时,我有这个奇怪的错误。

所以,我在package.json

中有这条配置
"scripts": {
  "start": "node index.js",
  "test": "mocha tests/spec.js"
}

当我尝试运行测试时,在终端中键入npm test并出现此错误:

module.js:340
    throw err;
          ^
Error: Cannot find module 'commander'

但是当我只输入mocha tests/spec.js时,一切正常。任何想法为什么会这样?

更新

我试图安装指挥官,但我遇到了错误无法找到模块'glob'。安装glob之后我有

  

错误:无法找到模块'../'*

但实际上问题是为什么我会遇到这些错误以及为什么在运行mocha tests/spec.js时一切正常?

1 个答案:

答案 0 :(得分:18)

您可能安装了两个版本的mocha:一个是全局的(npm install -g mocha),另一个是本地的,似乎已经损坏。

当您通过npmnpm run-script <name>npm testnpm start定义的快捷方式运行脚本时,您当前的包目录bin 1}}目录放在路径的前面。对于您的软件包,可能是./node_modules/.bin/,其中包含指向您的软件包mocha可执行文件的链接。

您可以通过删除本地摩卡并使用--save-dev重新安装它来解决此问题:

rm -rf node_modules/mocha
npm install --save-dev mocha

这应该可以让你获得一个工作的mocha本地副本及其所有依赖项(指挥官等)。