“npm test”如何工作?
我一直认为npm test
命令只是启动我将在脚本中的package.json中写入的内容:{test:…}部分。 但是,当它不起作用时,我有这个奇怪的错误。
所以,我在package.json中有这个configuration
"scripts": { "start": "node index.js", "test": "mocha tests/spec.js" }
当我尝试运行testing时,在terminalinputnpm test
,并发生这个错误:
module.js:340 throw err; ^ Error: Cannot find module 'commander'
但是,当我只键入mocha tests/spec.js
时,一切正常。 任何想法是为什么?
更新:
我试图安装指挥官,我有一个错误无法find模块'glob' 。 安装glob后,我有错误:找不到模块'../'
但实际上问题是为什么我有这些错误,为什么运行mocha tests/spec.js
时一切正常?
你可能有两个版本的摩卡安装:一个全球性( npm install -g mocha
)和一个本地,似乎被打破。
当您通过npm
运行脚本时,无论是npm run-script <name>
还是使用定义的快捷方式(如npm test
或npm start
,当前的程序包目录的bin
目录都位于path的前面。 对于你的软件包,可能是./node_modules/.bin/
,它包含你的软件包的mocha
可执行脚本的链接。
你可以通过删除当地的摩卡来解决这个问题,并用–save-dev重新安装:
rm -rf node_modules/mocha npm install --save-dev mocha
这应该让你有一个工作的本地摩卡与所有的依赖关系(指挥官等)安装。