创建一个NodeJS模块
Create a NodeJS module
我正在尝试制作一个具有以下模式的简单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.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]);
你可以在这里找到完整的答案。
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();
相关文章:
- 将一个方法转换为promise:Nodejs
- NodeJS在一个较大的字符串中获取一个字符串的索引
- 有没有一个Nodejs库可以序列化和反序列化命名组件的路径(比如URL路径名)
- NodeJS-从同一文件中的另一个方法调用一个方法
- Nodejs一个请求阻塞另一个请求
- Ajax在NodeJS中为一个耗时的请求请求多次重试
- NodeJS:一个全局EventEmitter或每个模块它'他自己的
- NodeJS:创建一个hash并返回一个函数的值
- RethinkDB:在r.js方法中加载一个NodeJS包
- 如果一个nodejs模块将一个对象导出到另外两个模块,那么在一个下游模块中对该对象所做的更改是否会传播到另一个下游模块
- 如何创建一个nodejs websocket客户端
- 如何从我的npm模块中写入另一个nodejs项目根文件夹
- 在dotcloud上托管一个nodejs服务器
- 有一个NodeJS CLI的启动脚本
- 将get请求从一个node.js服务器转发到另一个nodejs服务器
- 将一个模块包含在另一个 nodeJS 文件中
- 从一个函数内部的 request.get 返回变量值到另一个 NODEJS 表达式
- 创建一个NodeJS模块
- 如果我构建一个NodeJS应用程序,我需要gulp或Grunt吗?
- 最小化JS的好方法是什么?CSS上传一个NodeJS应用到Heroku