我正在尝试使用以下模式创建一个简单的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]);
如何使我的代码能够使用所需的模式?
答案 0 :(得分:3)
这是因为module.exports
和exports.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();