【问题标题】:Process exited before completing request - AWS Lambdas进程在完成请求之前退出 - AWS Lambda
【发布时间】:2018-04-20 22:59:20
【问题描述】:

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

在完成请求之前进程退出

下面是我的 sn-p:

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 不正确?

【问题讨论】:

  • 错误信息应该有更多内容。请查看 CloudWatch 日志。可能是您配置的 lambda 超时时间过低,而您的函数无法在该时间内完成执行。

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


【解决方案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);
  });
};

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 2015-08-03
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多