gpt4 book ai didi

amazon-web-services - 使用 CDK 部署时,Lambda 无法从外部文件夹中找到模块

转载 作者:行者123 更新时间:2023-12-04 08:19:46 26 4
gpt4 key购买 nike

我正在使用 cdk 将一些 API 部署到 API Gateway。我的问题是包含 lambda(index.ts) 的文件无法导入该文件夹(名为 get-users 的文件夹)之外的任何文件或 npm 模块。

我尝试将 node_modules 文件夹和其他文件(位于文件夹 get-users 之外)复制到文件夹 get-users它工作得很好。

导入lodash时的示例错误如下,

"errorType": "Runtime.ImportModuleError",
"errorMessage": "Error: Cannot find module 'lodash'",
"stack": [
"Runtime.ImportModuleError: Error: Cannot find module 'lodash'",

我正在进口 lodash如下,
import * as _ from "lodash";

我正在导入共享文件,如下所示,
import { validator } from "./shared/validators" // This one works

import { validator } from "../../shared/validators" // This one doesn't work

最佳答案

经过一番研究,我找到了答案。问题是 CDK 没有部署 node_modules 文件夹和包含 lambda 源文件的文件夹之外的其他文件夹。
创建 lambda 文件时,必须将根路径添加到“代码”属性中,以便它将其中的所有文件夹/文件部署到 lambda。

    const pathToRoot = //absolute path to the root folder
const pathToHandler = //path to handler from root folder
const lambdaFunction: Function = new Function(construct, name, {
functionName: name,
code: Code.asset(pathToRoot),
handler: `${pathToHandler}/index.handler`,
runtime: Runtime.NODEJS_10_X
});
更新
经过更多研究发现处理此问题的最佳方法是使用 Lambda Layers .我已将节点模块文件夹添加为层。

关于amazon-web-services - 使用 CDK 部署时,Lambda 无法从外部文件夹中找到模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57674293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com