创建一个NodeJS模块

Create a NodeJS module

本文关键字:一个 NodeJS 模块 创建      更新时间:2023-09-26

我正在尝试制作一个具有以下模式的简单NodeJS模块:module.exports = function () {}。我的问题是,当我写exports.myFunc = myFunc;时,它工作得很好,但当我写module.exports = myFunc;时,它不工作。

以下是我的一些代码片段:

函数.js:

var fs = require('fs');
var path = require('path');
var i = 0;
function getFilesByExtArgs (dir, ext){
    fs.readdir(dir, function (err, data){
                while (i <= data.length){
                    if (path.extname(data[i]) == ('.' + ext))
                        console.log(data[i]);
                    i++;
                }
        });
}
exports.getFilesByExtArgs = getFilesByExtArgs;

module.js:

var myModule = require('./listFilesByExtArgs');
myModule.getFilesByExtArgs(process.argv[2], process.argv[3]);

如何使我的代码能够使用所需的模式?

这是因为module.exportsexports.property的行为不同。因此,当您编写module.exports = myFunc;时,您实际上将一个完整的模块作为一个函数。它使用以下方式:

var myModule = require('./listFilesByExtArgs');
// In mymodule is actually alias to a func listFilesByExtArgs
myModule(process.argv[2], process.argv[3]);

你可以在这里找到完整的答案。

module.exports = myFunc

将myFunc函数导出为模块,而

exports.myFunc = myFunc

将myFunc函数导出为导出模块的myFunc属性。

所以你要么用

// case: module.exports = myFunc
var myModule = require('myModule');
myModule();

// case: exports.myFunc = myFunc
var myModule = require('myModule');
myModule.myFunc();