我正在研究合并swagger文件。我想传递像
这样的数组[
{ method: '1', path: '/signIn', handler: funation() {return "abcd"},
{ method: '2', path: '/signOut', handler: funation() {return "123"},
]
我根据自己的需要得到了结果,但是没有传递给module.exports,我在需要这个文件后将其检入另一个文件控制台, 我的代码就像
jsonResolve(root, options).then(function (results) {
const result = results.resolved.paths;
// console.log(result);
for (key in result) {
// console.log('keys', key);
const apiRoute = key;
const apiDescription = result[key];
let controller = apiDescription['x-swagger-router-controller'];
for (method in apiDescription) {
// console.log("methods", method);
let newRoute = {};
if (method !== 'x-swagger-router-controller') {
let operationId1 = apiDescription[method].operationId;
newRoute = {
method: method,
path: apiRoute,
handler: controllers[controller][operationId1](),
};
exoprtData.push(newRoute);
}
}
}
return exoprtData;
})
.then((result) => {
console.log(result);
module.exports = result;
})
我最后检查了结果。但没有传递给module.exports
我的需要文件代码就像,
var ApiRoutes = require("./routes/api");
console.log("ApiRoutes", ApiRoutes);
在这里我得到的结果如控件
ApiRoutes {}
请帮我解决这个问题。提前致谢
答案 0 :(得分:0)
Node.js期望同步加载任何模块 - 即。 必须在当前执行循环中分配给module.exports
,否则模块的导出内容将成为默认的空对象。
您在解决承诺后分配给module.exports
。 这不起作用 - 在解析promise时,Node.js已经完成加载模块并缓存导出的值(空对象)作为模块的内容。您现在无法通过分配module.exports
来更改它。
要解决此问题,您必须:
jsonResolve()
做什么)module.exports