1

因此,有了本教程,我决定在我的 node.js 应用程序中添加一些单元测试。我的 gruntfile 似乎没问题,当我键入时,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/nodeunitrequire('tap')在交互式控制台中输入时,我得到一些包含很多东西的对象,这给我的印象是它可以正常工作。

所以,显而易见的问题是:为什么我会收到这个错误,我该如何解决?

咕噜文件:

module.exports = function(grunt) {

    grunt.initConfig({
        nodeunit: {
            all: ['./**/*.test.js']
        }
    });

    grunt.loadNpmTasks('grunt-contrib-nodeunit');
};

更新:安装tap到我的项目中,但也没有帮助。

4

4 回答 4

7

我遇到了这个问题,并且已经解决了我自己的问题。我会发布我的决议,因为它可能对其他人有帮助:

首先是相似之处:

我刚刚设置了 Gulp 脚本,运行测试时出现了这个错误:

Fatal error: Cannot find module 'tap'

这没有意义,因为我没有使用那个库!

我是如何解决的:

结果我的路径在我的 gulpfile.js 中都搞砸了。因此,我试图对我的 node_modules 文件夹中的所有模块进行单元测试!

这是新路径:

 paths: {
      mocha: [
        '**/*.test.js',
        '!node_modules/**/*.js'
      ]
 }
于 2016-04-18T13:19:00.913 回答
0

对我来说,问题是我无意中在node_modules目录中运行了测试。我npm testmocha **/*.test.js,当我mocha src/**/*.test.js突然将其更改为时,消息消失了。真的有道理。

于 2017-07-24T12:32:07.623 回答
0

我通过在“mocha”之后添加另一个“*”解决了这个问题,它与文件夹的路径有关,所以它也可以解决其他情况下的问题。

于 2018-01-17T20:08:06.127 回答
-1

tap我通过手动安装模块解决了这个问题(好吧,这个问题 - 它不是最后一个) 。

于 2014-05-12T15:49:37.303 回答