我在全局环境中创建了一组异步函数。我想在所有模块中重用异步函数。当我在其他模块中调用重用异步函数时,它返回undefined。
全球
module.exports = ((global) => {
return {
async funcA(){
return Promise.resolve();
},
async funcB(){
return Promise.resolve();
}
}
})
端点
module.exports = ((global) => {
return async(req, res, next) => {
var getA = await global.funcA(); // Undefined
};
});
路线
import global from './global';
console.log(global); // all the scripts
console.log(global.funcA); // Undefined
let endpoint = require('./endpoint')(global);
api.get('/test', endpoint);
答案 0 :(得分:2)
首先,您不应该使用术语全局,因为Node.js已经使用过它。
无论如何,您似乎正在尝试从名为全局的文件中导出某些功能,然后您可以在整个应用程序中导入和使用这些功能。
<强> GlobalFuncs 强>
您只需返回一个承诺就不需要导出异步函数。您也不需要将全局作为参数的函数。
所以你可以导出一个包含两个函数的对象:
module.exports = {
funcA() {
return Promise.resolve('Value A')
},
funcB() {
return Promise.resolve('Value B')
}
}
<强>端点强>
您可以使用等待关键字来获取异步功能:
const globalFuncs = require('./global-funcs')
module.exports = async (req, res) => {
let getA = await globalFuncs.funcA()
// Send result as response (amend as necessary)
res.send(getA)
}
<强>路线强>
在这里,您只需导入端点功能并在路线中使用它:
const endpoint = require('./endpoint')
api.get('/test', endpoint)