将选项传递给节点模块以供导出功能使用

时间:2017-09-20 04:55:48

标签: node.js node-modules

我正在创建一个节点模块,并希望该模块的最终用户能够传递对模块功能有影响的配置选项。

例如,使用快递,您可以创建快速应用并将其传递到您的路线:

const express = require('express');
const app = express();

require('./api/routes/login)(app)

然后在您的路线文件中,您可以使用该应用 - > / API /路由/登录

//login.js

  module.exports = function(app){

   app.get('/login', function(req, res){//blah}

  }

所以我在我的模块中尝试做的是类似的事情,最终用户可以为模块的功能传递可选的配置参数。这是我试图.....

在我的模块文件中:

const default_options = {"enabled":true}
module.exports = function(options) {
const options = options || default_options

exports.login = function(credentials) {
if(options.enabled == true){
 //do something
 }else{
    //do something else
  }
 }

}

然后使用该模块的人可以做这样的事情:

//some js file
 var options = {"enabled":false}
 const mod = require('mymodule')(options)

 mod.login(creds)

我得到的错误是“无法读取属性'登录'未定义的'。我怀疑它与我使用导出两次有关,但试图找出如何构建我的模块的js文件,以便能够使用这些选项,如果传递它并将它们应用于暴露的函数。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

您需要从导出的函数返回一个对象。

const default_options = {"enabled":true}
module.exports = function(options) {
    const options = options || default_options
    return {
        login: function(credentials) {
            ...
        }
    }
}