创建NodeJS模块

时间:2015-06-02 12:31:18

标签: javascript node.js

我正在尝试使用以下模式创建一个简单的NodeJS模块:module.exports = function () {}。 我的问题是,当我写exports.myFunc = myFunc;时效果很好,但是当我写module.exports = myFunc;时,它不起作用。

以下是我的一些代码段:

function.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]);

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

2 个答案:

答案 0 :(得分: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]);

您可以找到here的完整答案。

答案 1 :(得分:1)

file1   <- "https://dl.dropboxusercontent.com/u/94114397/example.txt"
result <- read.table(file1, header=F, sep="\t", quote="\"",encoding="windows-1252")

将myFunc函数导出为模块

module.exports = myFunc

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

所以你要么使用

exports.myFunc = myFunc

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