【发布时间】: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