首页 > 解决方案 > 响应数据较大时的 AWS Lambda NodeJs 响应错误

问题描述

当我尝试从 nodejs lambda 函数返回响应时,我收到以下错误:

Can't set headers after they are sent Error: Can't set headers after they are sent at validateHeader

如果响应长度很小,那么我会在响应中得到它。

我尝试发送硬编码数据并观察到相同的结果 - 获取小数据的输出,而不是大数据的输出。

在这两种情况下都存在错误,但如果数据长度很小,我会得到响应。

我们该如何解决?

添加部分代码进行审查:

let videoInstance = await _searchVideo();

    if (!videoInstance) {
      const err = new APIError('Video not found!', HTTPStatus.NOT_FOUND, true);
      return next(err);
    }
    let collections = await parseVideoList([videoInstance]);
    if (req.accessToken && req.accessToken.obj) {
      collections = _.filter(collections, collection => {
        return collection.subscribed;
      });
    }
    let respObj = {
      _embedded: {
        collections
      }
    }

    res.json(respObj);
  } catch (exec) {
    return next(exec);
  }

标签: node.jsexpressaws-lambda

解决方案


我有一个解决这个问题的方法。我做了以下事情:

res.end(JSON.stringify(respObj));

我仍然可以在控制台中看到错误,但在这种情况下我得到了响应。


推荐阅读