#javascript #typescript #tsc #monorepo
Вопрос:
У меня есть монорепост с несколькими пакетами и одной общей библиотекой:
root/
one/
two/
three/
shared-lib/
package.json
tsconfig.json
tsconfig.json:
{
"compilerOptions": {
"rootDir": "src",
"outDir": "build",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"declaration": true,
"declarationMap": true,
"skipLibCheck": true,
"target": "es5",
"module": "esnext",
"jsx": "react"
},
"include": [
"src"
],
"exclude": [
"**/node_modules/**",
"node_modules",
"build"
]
}
Когда я пытаюсь скомпилировать свою библиотеку, я получаю ошибки в пакетах one
, two
, и three
.
$ cd root/shared-lib
$ yarn run tsc -p tsconfig.json
../one/some/module/up/in/here:14:25 - error TS2307: Cannot find module ...
Почему я вижу здесь эти ошибки? Почему tsc
вы пытаетесь скомпилировать материал вне пакета, который я велел ему скомпилировать?
Комментарии:
1. Вы случайно не определили в своем tsconfig какой-либо базовый файл, который не указывает на корневой каталог (в данном случае-общую библиотеку)?
2. Как выглядит ваше
tsconfig.json
досье?3. Скопированное
tsconfig.json
содержимое на вопрос.4. Убедитесь, что ничто
shared-lib
не импортирует что-либо из других модулей5. Обратите внимание, что я использую lerna на верхнем уровне репозитория, но на самом деле я не вызываю никаких
lerna
команд, когда вижу такое поведение.
Ответ №1:
Как и предполагалось, основной причиной было то, что у меня случайно были ссылки на one/
two/
, и т. Д. Изнутри shared-lib/
(как следствие неполного рефакторинга материала shared-lib/
). Исправление этих импортных операций решает проблему.