【问题标题】:Serverless : "errorMessage": "Cannot read property 'id' of undefined",无服务器:“errorMessage”:“无法读取未定义的属性 'id'”,
【发布时间】:2020-10-10 21:14:13
【问题描述】:

我开始尝试使用 node 和 puppeteer 编写 lambda 函数。我正在使用无服务器框架。

在我的 handler.js 中:

exports.detail = async (event, context) => {
  console.log(event);

  let id = event.pathParameters.id || 1;
  console.log(id);

我一直在尝试使用 event 参数传入 id 参数,但如果未设置,我希望将值设置为 1 。但是当我尝试时:

$ sls invoke local -f detail 

{
"errorMessage": "Cannot read property 'id' of undefined",
"errorType": "TypeError",
"stackTrace": [
    "TypeError: Cannot read property 'id' of undefined",

我怎样才能让它工作?

【问题讨论】:

  • 因为您没有传递婴儿车,您可以将此行更新为 event.pathParameters.id -> (event && event.pathParameters && event.pathParameters.id)?event.pathParameters.id:1
  • 谢谢,但为什么不“让id = event.pathParameters.id || 1;”工作吗?
  • 这只是您检查事件对象是否具有 pathParameters 然后检查 pathParameters 具有 id 属性只有然后访问访问 event.pathParameters.id ,否则返回 1 ,如果您的 event.pathParameters 为空/未定义为您没有通过,pathParameters 属性不存在,所以 javascript 抛出错误,这不是正确的访问方式,所以我们添加了一个条件来确保 id 存在。

标签: javascript node.js serverless-framework


【解决方案1】:

event.pathParameters.id 失败,因为 event.pathParameters 未定义。错误消息告诉您undefined 没有名为id 的属性。

试试:

let id = event.pathParameters ? event.pathParameters.id : 1;

改为

【讨论】:

  • 关闭,但让 id = (event && event.pathParameters && event.pathParameters.id)?event.pathParameters.id:1 - 在我的情况下工作...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 2021-08-11
  • 2021-02-02
  • 2021-11-04
  • 2021-04-28
  • 2020-09-03
  • 2018-10-01
相关资源
最近更新 更多