如何在AWS Lambda中导入函数?

4
我正在使用api网关调用一个发出post请求的接口,并检查httpMethod是否为post。如果是,那么执行以下操作。

默认情况下,入口点为index.js。我保留了这个文件,但我在考虑,如果我使用同一个lambda,我也可以检查它是否为get httpMethod。如果是,则执行以下操作。但我想要将我的代码分开。我看到对于同一个lambda函数,我可以添加文件。所以我尝试添加了另一个名为post.js的文件,然后在index.js中引用它。

不知何故,它没有传递值或调用post.js中导出的函数。

index.js

  const postHandler = require('./post.js');

  exports.handler = async (event, context) => {
      try {
          const httpm = event.context["http-method"];
          const rbody = event["body-json"];

          console.log(postHandler, 'post handler function?');  // { postHandler: [AsyncFunction] } 'post handler function?'
          console.log(httpm, 'httpmhttpm');  // 'POST'

          if (httpm === 'POST') return postHandler(rbody);
      } catch (e) {
          return e;
      }

  };

post.js// 这里没有做任何特殊处理,但是这些控制台输出都没有显示出来。

exports.postHandler = async (rbody) => {
    console.log('I am inside postHandler()');
    console.log(rbody);

    return {status: true};
};

感谢您提前提供任何建议/帮助。

不好意思,问题是错误的导入。 - AlexOwl
const { postHandler } = require('./post.js'); - AlexOwl
@AlexOwl 哦我的天啊~ 我怎么会错过那个该死的! - Dora
1
我们很累。 - AlexOwl
1个回答

4

// default export (change post.js file)
module.exports = async (rbody) => {
    console.log('I am inside postHandler()');
    console.log(rbody);

    return {status: true};
};

// OR !

// change (index.js file)
const { postHandler } = require('./post.js');


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接