【问题标题】:Nodeunit with grunt can't find module 'tap'带有咕噜声的Nodeunit找不到模块'tap'
【发布时间】:2014-05-08 18:39:03
【问题描述】:

因此,有了this tutorial,我决定在我的 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/nodeunit 中启动节点并在交互式控制台中输入require('tap') 时,我得到了一些包含很多东西的对象,这给我的印象是它应该可以正常工作.

那么,显而易见的问题是:为什么会出现此错误,我该如何解决?

Gruntfile:

module.exports = function(grunt) {

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

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

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

【问题讨论】:

  • 由于“信息不足”,我获得了一张接近投票。我应该在问题中添加哪些信息?

标签: node.js requirejs gruntjs npm nodeunit


【解决方案1】:

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

首先是相似之处:

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

Fatal error: Cannot find module 'tap'

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

我是如何解决的:

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

这是新路径:

 paths: {
      mocha: [
        '**/*.test.js',
        '!node_modules/**/*.js'
      ]
 }

【讨论】:

  • 我在搜索我的 ensure node_modules 目录时也遇到了类似的问题
  • 是的,我也陷入了这个;更改了目录结构,它立即工作 - 干杯。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 不是一个很好的解决方案。 =/
      猜你喜欢
      • 2014-10-17
      • 2014-06-30
      • 1970-01-01
      • 2015-04-13
      • 2013-03-15
      • 2015-05-25
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多