javascript - Node.js 列出文件中所需的所有模块

标签 javascript node.js mocha.js

我一定错过了一些东西。我有一个 Mocha 测试文件,设置如下:

require('globals');
var library1 = require('library1'),
  library2 = require('library2');

it('tests stuff', function() {
  ...
});

其中 globals 文件仅包含 beforeafterEach block ,以便它们适用于我的所有测试文件。

我想要做的是,在 beforeafterEach block 中,确定我在当前运行这些 block 的测试文件中 require 的哪些文件。因此,在我给出的示例测试文件中,我需要 afterEach 输出一个包含 globalslibrary1library2 的列表。

我尝试使用 Node.js 的 module.children 属性,但由于某种原因,它只返回我 globals,并且不包括 library1library2

编辑:我错过了什么,module.children不会返回library1library2

最佳答案

这是一个将解析文件中的 require 的脚本示例。

var fs = require('fs');

function parseRequires(absPath){
    var requiredFiles = [];
    var contents = fs.readFileSync(absPath, 'utf8').split('\n');

    contents.forEach(function(line){
        var re = /(?:require\('?"?)(.*?)(?:'?"?\))/;
        var matches = re.exec(line);

        if(matches){
            requiredFiles.push(matches[1]);
        }

    });

    return requiredFiles;

}

module.exports = parseRequires;

我在同一目录中制作了一个测试脚本

var fs = require('fs');
var os = require('os');

function A(){}

var http = require("http");

var parseRequires = require("./parseRequires");

console.log( parseRequires( __dirname + '/testRequires.js') );

控制台结果:[ 'fs', 'os', 'http', './parseRequires' ]

这是一个解决方案,尽管我确信有一种更简单的方法可以使用 Nodejs 内置功能来做到这一点

关于javascript - Node.js 列出文件中所需的所有模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875682/

相关文章:

node.js - 如何使用多个嵌套的私有(private) Node 模块?

javascript - 将回调转换为 Promise

javascript - 是否有类似于 os.path.join 的内置 javascript 函数?

javascript - 未收集覆盖信息, Istanbul 尔覆盖。 (页面中类似问题的答案对我不起作用)

javascript - 如何将 AJAX 检索的值返回给 JavaScript 中当前函数的父函数?

javascript - Internet Explorer 和 tspan 垂直对齐

javascript - 通过 JQuery 从 SELECT 标签获取选定的 Data 属性

javascript - Object doesn't support this property or method EmberJs IE 8 问题

javascript - 如何使用 Sinon 创建测试替身来阻止实际函数的执行

javascript - 如何从 selenium javascript 中返回的 findElement 中查找元素