use*_*870 8 lambda typescript aws-lambda-layers
我试图在构建 Lambda 函数时使用 TypeScript,但在使用同样用 TypeScript 编写的 Lambda 层时遇到问题。
TypeScript 无法识别我的层的 /opt/nodejs/... 导入(因为它会在 SAM 或 AWS 中运行),因此我无法将我在层中定义的类型导入到我的 Lambda 函数。
我试图查看我是否能够以某种方式 npm 链接该层,但我似乎无法使其正常工作,因为导入是本地路径 '/opt/nodejs...' 而不仅仅是模块名称。
层:
export interface SomeType {
someField: string
}
Run Code Online (Sandbox Code Playgroud)
拉姆达:
import { SomeType } from '/opt/nodejs/myLayer' // this does not work
Run Code Online (Sandbox Code Playgroud)
我刚刚收到错误消息:Cannot find module '/opt/nodejs/myLayer'.ts(2307)我发现自己不得不用它来抑制它,// @ts-ignore can be ignored as this is a Lambda layer但这意味着我无法使用层中的 TypeScript 类型。
use*_*870 10
我想我可能已经解决了这个问题,我在 tsconfig.json 中添加了 /opt/nodejs... 路径作为路径映射:
{
"paths": {
"/opt/nodejs/myLayer": ["../../layers/myLayer/src/some-layer-module"]
}
}
Run Code Online (Sandbox Code Playgroud)
我现在可以从 Layer 导入 TypeScript 类型,因为导入路径没有改变,它仍然可以在 AWS/SAM 中工作