我正在创建一个节点模块,并希望该模块的最终用户能够传递对模块功能有影响的配置选项。
例如,使用快递,您可以创建快速应用并将其传递到您的路线:
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文件,以便能够使用这些选项,如果传递它并将它们应用于暴露的函数。
感谢任何帮助,谢谢!
答案 0 :(得分:2)
您需要从导出的函数返回一个对象。
const default_options = {"enabled":true}
module.exports = function(options) {
const options = options || default_options
return {
login: function(credentials) {
...
}
}
}