我可以从Lambda图层导入打字稿类型吗?

时间:2019-08-19 08:38:04

标签: typescript lambda aws-lambda-layers

我在构建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类型。

1 个答案:

答案 0 :(得分:2)

我想我可能已经解决了这个问题,我在tsconfig.json中添加了/ opt / nodejs ...路径作为路径映射:

{
    "paths": {
      "/opt/nodejs/myLayer": ["../../layers/myLayer/src/some-layer-module"]
    }
}

我现在可以从图层中导入TypeScript类型,并且由于导入路径没有更改,它仍然可以在AWS / SAM中使用