Могу ли я импортировать машинописные типы из лямбда-слоя?
Я пытаюсь использовать 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