在完成请求之前退出流程 - AWS Lambdas

时间:2018-04-20 09:38:16

标签: javascript node.js amazon-web-services

我正在使用AWS Lambdas尝试连接到CMS,我遇到了以下错误:

  

在完成请求之前退出流程

以下是我的代码段:

require('dotenv').config({ silent: true });
const contentful = require('contentful');

exports.handler = (event, context) => {
  const client = contentful.createClient({
    space: process.env.SPACE_ID,
    accessToken: process.env.CDA_TOKEN
  })
  client.getEntries({
    'content_type': 'thumbnail'
  })
  .then(function (entries) {
    context.succeed(JSON.stringify(entries));
    })
};

这个错误是否表明我的代码中某处出现了错误,导致它无法运行context.succeed或者我正在使用context.succeed?

1 个答案:

答案 0 :(得分:1)

  

在完成请求之前退出流程

这意味着你有一个未处理的异常。你的处理程序基本崩溃而没有告诉Lambda为什么。

查看您的代码时,很有可能client.getEntries()承诺被拒绝,而您没有为您的承诺提供.catch()

您可以执行以下操作......

// Use callback coz context.succeed() is soooo legacy.
exports.handler = (event, context, callback) => {
  const client = contentful.createClient({
    space: process.env.SPACE_ID,
    accessToken: process.env.CDA_TOKEN
  })

  return client.getEntries({
    'content_type': 'thumbnail'
  })
  // Be consistent with arrow function usage.
  .then((entries) => callback(null, JSON.stringify(entries)))
  // This is what is missing.
  .catch((err) => {
    // Log the error so you know what it is and fix it.
    console.error(err);
    // Be polite and tell Lambda that the invocation failed.
    callback(err);
  });
};