【发布时间】:2021-07-01 20:27:13
【问题描述】:
我有一个 nodejs 服务网关代码,它将请求转发到 Angular 应用程序发出的服务。这是一段代码
router.get('/callService/:service/*', (req, res) => {
certOption = { httpsAgent: new https.Agent({ ca: fs.readFileSync(config.get("sslCertFilename")) }) };
let serviceName = req.params.service;
let serviceRoute = req.params[0];
let authHeaders = {
"Authorization": req.headers["authorization"],
"subscriber-id": req.headers["subscriber-id"],
'Cache-Control': 'no-cache',
'Pragma': 'no-cache',
'Expires': 'Sat, 01 Jan 2000 00:00:00 GMT'
}
axios.get(`${config.get(serviceName)}/${serviceRoute}`, Object.assign(certOption, {
params: req.query,
headers: authHeaders
}))
.then(function (response) {
// handle success
res.json(response.data);
})
.catch(function (error) {
// handle error
console.log(error);
if (error.response)
res.status(error.response.status).json(error.response.data);
else
res.status(500).send();
});
});
应用程序使用如下: Angular App (A) 调用 NodeJS Gateway (N),后者又调用 Service (S) 并将 S 的响应返回给 A。
99% 的代码按预期工作,并且已经工作了一年多。突然从上个月开始间歇性地弹出一个问题,它不是将 JSON 从 S 返回到 A,而是返回一个缓冲区对象 {"type":"Buffer","data":[...]}。当我解析缓冲区时,它给了我实际从 S 返回的 JSON。当我重新启动服务时,它又开始工作了。我无法弄清楚它背后的问题。
感谢任何帮助
【问题讨论】: