Я начинаю разработку AWS лямбда-функции в TypeScript. Я хочу, чтобы каталог node_modules
находился в подкаталоге, чтобы иметь возможность управлять всеми зависимостями в слое. Итак, у меня есть следующая структура:
- dependencies/ <- This will be my layer
- nodesjs/
- node_modules/
...
- my_own_dependencies/
...
- src
- blabla.ts
Я использую относительный импорт для my_own_dependencies
, и он прекрасно работает.
Но я не могу получить tsc
для импорта модулей узлов, независимо от модуля, я всегда получаю error TS2307: Cannot find module 'xxxx'
. Использование относительного импорта не очень помогает, потому что, если сам модуль зависит от другого модуля, ошибка все равно будет выдана.
Я пробовал различные комбинации compilerOptions
параметров (baseUrl
, paths
и rootDirs
) в tsconfig.json
, но ни один из них на самом деле не работает.
Прямо сейчас мой tsconfig. json выглядит так:
{
"compilerOptions": {
"target": "es2019",
"module": "commonjs"
"strict": true,
"moduleResolution": "node",
"baseUrl": ".",
"paths": {
"*": [
"dependencies/nodejs/node_modules"
]
},
"forceConsistentCasingInFileNames": true
}
}
Редактировать: Выполняется tsc --traceResolution blah/blah.ts
выводит следующее:
Module resolution kind is not specified, using 'NodeJs'.
Loading module 'xxx' from 'node_modules' folder, target file type 'TypeScript'.
Directory '/path/to/blah/node_modules' does not exist, skipping all lookups in it.
File '/path/to/node_modules/xxx.ts' does not exist.
...
And so on until:
Directory '/node_modules' does not exist, skipping all lookups in it.
Что странно, так это то, что он говорит, что тип разрешения модуля не определен, хотя он четко определен как "узел" в tsconfig.json
...
Спасибо за вашу помощь!