Я использую ссылки на проекты для ссылки на "общий" проект из "передних" и "задних".
tsc -v: Version 3.3.3
Структура проекта:
./{MY_PROJECT}.code-workspace /* the only file in this level */
./back
./back/tsconfig.json
./shared/src/
./shared/
./shared/tsconfig.json
./shared/src/
./front
./front/tsconfig.json
./front/src
Я пытаюсь импортировать модуль в ./front/src/article-view-model.ts
из общего проекта:
import Article from "@shared/src/article"; // alias path
import Article from "../../shared/src/article"; // full relative path
export default class ArticleViewModel {
}
В графическом интерфейсе VS Code сразу отображаются следующие ошибки:
Для псевдонима пути:
Не удается найти модуль '@ shared / src / article'. TS (2307)
Для полного относительного пути:
Выходной файл '../../shared/src/article' не был построен из исходного файла 'c: / {SOMEWHERE_IN_MY_PC} /shared/src/article.ts'. TS (6305)
Intellisense (VS Code) работает как для псевдонима, так и для относительных параметров:
Если я попытаюсь игнорировать ошибки и выполнить сборку, произойдет сбой:
C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 1296
бросить е;
^
Ошибка: ошибка отладки. Ложное выражение.
at mergeSymbol (C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 25861: 26)
в C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 25960: 47
в Map.forEach ()
at mergeSymbolTable (C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 25958: 20)
at initializeTypeChecker (C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 48653: 21)
at Object.createTypeChecker (C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 25711: 9)
в getDiagnosticsProroductionTypeChecker (C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 71398: 93)
в Object.getGlobalDiagnostics (C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 71755: 72)
в Object.getGlobalDiagnostics (C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 73528: 86)
в buildSingleProject (C: \ Program Files \ nodejs \ node_modules \ npm \ bin \ node_modules \ typescript \ lib \ tsc.js: 75803: 127)
. / Front / tsconfig.json содержимое:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"baseUrl": ".",
"module": "amd",
"noEmitOnError": true,
"noImplicitAny": false,
"out": "./lib/front-bundle.js",
"paths": {"@shared/*" : ["../shared/*"]},
"preserveConstEnums": true,
"removeComments": true,
"sourceMap": true,
"target": "es2015",
"watch": true
},
"include": [
"./src/**/*.ts",
],
"references": [
{
"path": "../shared"
}
]
}
. / Shared / tsconfig.json содержимое:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"composite": true,
"declaration": true,
"module": "amd",
"noEmitOnError": true,
"noImplicitAny": false,
"out": "./lib/shared-bundle.js",
"preserveConstEnums": true,
"removeComments": true,
"sourceMap": true,
"target": "es2015",
"watch": true
},
"include": [
"./src/**/*.ts",
]
}