导出方法以在同一 lambda 函数中的其他文件中使用 - Node.js

问题描述

在我的 lambda 中使用集成了反向代理的 http api 网关,我需要检查 API 的不同路由。我现在有 2 个 index.js 文件,在主文件中,我有处理程序:

...
const read_all_Todos = require("./lib/read_all/index");

const main = (event,context,callback) => {

    let httpMethodCall = event.requestContext.http.method;
    let itsCallingFrom = event.rawPath;

    switch (itsCallingFrom) {
        case '/v1/listalltodos':
            read_all_Todos.test(event,callback);
            break;
        default:
            return callback(null,{ method: httpMethodCall,rawPath: itsCallingFrom });
    }
};

...

在我拥有的另一个文件上:

export function test(event,callback) {
    let httpMethodCall = event.requestContext.http.method;
    let itsCallingFrom = event.rawPath;
    
    return callback(null,rawPath: itsCallingFrom });
}

用户访问网址 /v1/listalltodos 时,我看到 message "Internal Server Error"

这里出了什么问题?

编辑:

每次我尝试在日志中导出函数时,我都会看到: "errorMessage": "SyntaxError: Unexpected token 'export'",

那么在 lambda 中导出方法的正确方法是什么?

解决方法

好吧,我想通了,它给出了内部服务器错误,因为它不使用常见的 JavaScript 导出实践,这是必须的:

1- 您像往常一样导入文件:

const read_all_todos = require("./lib/read_all/ReadAllTodos");

2- 您在同一个文件中调用它:read_all_todos.foo();

3- 这是关键/不同的部分,您像这样定义导出

function internal_foo () {
    console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    return 1;
}

module.exports.foo = internal_foo;

如您所见,您必须将其导出为模块,如果您只编写 export ... 它会引发内部服务器错误。