因此,在this tutorial的帮助下,我决定在我的node.js应用程序中添加一些单元测试。我的grunt文件似乎没问题,当我输入grunt nodeunit
时,我的唯一测试运行得很好,但在那之后,它崩溃并出现错误Fatal error: Cannot find module 'tap'
:
$> grunt nodeunit
Running "nodeunit:all" (nodeunit) task
Testing db.test.js
.OK
Fatal error: Cannot find module 'tap'
我对这个模块一无所知,但是在搞砸之后,看来它似乎是nodeunit需要的东西。事实上,它是:$MY_NODE_APP/node_modules/nodeunit/node_modules/tap
存在,当我在$MY_NODE_APP/node_modules/nodeunit
中启动节点并在交互式控制台中键入require('tap')
时,我得到一些带有很多东西的对象给我一个印象它可以正常工作。
所以,显而易见的问题是:为什么我会收到此错误,我该如何解决?
Gruntfile:
module.exports = function(grunt) {
grunt.initConfig({
nodeunit: {
all: ['./**/*.test.js']
}
});
grunt.loadNpmTasks('grunt-contrib-nodeunit');
};
更新:已将tap
安装到我的项目中,但它也没有帮助。
答案 0 :(得分:7)
我着手解决这个问题并解决了我自己的问题。我会发布我的决议,因为它可能对其他人有帮助:
首先是相似之处:
我刚刚设置了Gulp脚本,运行测试时遇到了这个错误:
Fatal error: Cannot find module 'tap'
哪个没有意义,因为我没有使用该库!
我是如何解决的:
原来我的路径在我的gulpfile.js中搞砸了。因此,我试图对我的node_modules文件夹中的所有模块进行单元测试!
这是新路径:
paths: {
mocha: [
'**/*.test.js',
'!node_modules/**/*.js'
]
}
答案 1 :(得分:0)
对我来说,问题是我无意中在node_modules
目录中运行了测试。我的npm test
为mocha **/*.test.js
,当我将其更改为mocha src/**/*.test.js
时,消息突然消失。真有意义。
答案 2 :(得分:0)
我通过在“mocha”之后添加另一个'*'来解决问题,它与文件夹的路径相关,因此它也可以解决其他情况下的问题。
答案 3 :(得分:-1)
我通过手动安装tap
模块解决了这个问题(好吧,这个问题 - 它不是最后一个)。