-1

我正在处理合并招摇文件。我想传递数组

[ 
  { 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 {}

请帮我解决这个问题。提前致谢

4

1 回答 1

0

Node.js 期望同步加载任何模块 - 即。您必须在当前执行循环中分配给module.exports,否则模块的导出内容将是默认的空对象。

module.exports在解决承诺后分配给。这将不起作用- 当 promise 被解决时,Node.js 已经完成加载您的模块并将导出的值(空对象)缓存为模块的内容。您不能通过分配到module.exports现在来更改它。

要解决此问题,您必须:

  • 导出一个通过promise返回数组的函数
  • 不知何故让它同步工作(取决于做什么jsonResolve()
  • 将实际承诺分配给module.exports
于 2017-08-23T07:28:42.903 回答