Могу ли я импортировать машинописные типы из лямбда-слоя?

Я пытаюсь использовать TypeScript при создании функций Lambda, но сталкиваюсь с проблемой при использовании Lambda Layer, который также написан на TypeScript.

TypeScript не распознает импорт /opt/nodejs/... для моего слоя (как это выполняется в SAM или AWS), и поэтому я не могу импортировать типы, которые я определил в слое, в мою функцию 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 ответ

Я думаю, что, возможно, я решил эту проблему, я добавил путь /opt/nodejs... как отображение пути в tsconfig.json:

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

Теперь я могу импортировать типы TypeScript из слоя и, поскольку путь импорта не изменился, он все равно будет работать в AWS/SAM

Другие вопросы по тегам