"npm"如何运行"npm test"?

Vit*_*kov 32 node.js npm

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

所以,我有这个配置 package.json

"scripts": {
  "start": "node index.js",
  "test": "mocha tests/spec.js"
}
Run Code Online (Sandbox Code Playgroud)

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

module.js:340
    throw err;
          ^
Error: Cannot find module 'commander'
Run Code Online (Sandbox Code Playgroud)

但是当我打字时,一切都很好mocha tests/spec.js.任何想法为什么会这样?

更新:

我试图安装指挥官,我有一个错误找不到模块'glob'.安装后glob我有

错误:找不到模块'../'**

但实际上问题是为什么我有这些错误,为什么运行时一切正常mocha tests/spec.js

Sam*_*kes 23

您可能安装了两个版本的mocha:一个是global(npm install -g mocha),一个是本地的,看起来很糟糕.

当您运行脚本时npm,或者使用npm run-script <name>或定义的快捷方式,npm test或者npm start当前包目录的bin目录位于路径的前面.对于您的软件包,它可能./node_modules/.bin/包含指向软件包mocha可执行脚本的链接.

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

npm install -g mocha

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

  • 谢谢!我找到这个答案是因为`npm help test`说:`如果提供了包,它将运行程序包的“ test”脚本。`但没有说明文件系统上“ test”脚本的位置!就像您在这里所说的那样,很高兴知道它在我的“当前软件包目录的`bin`目录”中! (2认同)
  • 您能告诉我“ npm test”和“ npm run test”有什么区别 (2认同)