我在构建Lambda函数时尝试使用TypeScript,但是在使用也是用TypeScript编写的Lambda Layer时遇到问题。
TypeScript无法识别我的Layer的/ opt / nodejs / ...导入(因为它将在SAM或AWS中运行),因此我无法将在Layer中定义的类型导入到Lambda函数中。
我试图查看我是否能够以某种方式npm链接图层,但似乎无法正常工作,因为导入是本地路径“ / opt / nodejs ...”,而不仅仅是一个模块名称。
层:
export interface SomeType {
someField: string
}
Lambda:
import { SomeType } from '/opt/nodejs/myLayer' // this does not work
我只是得到错误:Cannot find module '/opt/nodejs/myLayer'.ts(2307)
,发现自己不得不用// @ts-ignore can be ignored as this is a Lambda layer
来抑制此错误,但这意味着我无法使用该图层中的TypeScript类型。
答案 0 :(得分:2)
我想我可能已经解决了这个问题,我在tsconfig.json中添加了/ opt / nodejs ...路径作为路径映射:
{
"paths": {
"/opt/nodejs/myLayer": ["../../layers/myLayer/src/some-layer-module"]
}
}
我现在可以从图层中导入TypeScript类型,并且由于导入路径没有更改,它仍然可以在AWS / SAM中使用