Angular 无法从其他项目访问Typescript文件-项目引用
我试图访问mono repo中另一个项目中定义的类型。以下是项目的结构Angular 无法从其他项目访问Typescript文件-项目引用,angular,typescript,Angular,Typescript,我试图访问mono repo中另一个项目中定义的类型。以下是项目的结构 -- packages -- project-a -- tsconfig.json -- project-b -- tsconfig.json -- shared -- src -- UserModel.ts -- index.ts -- tsconfig.json -- tsconfig.base.json -- p
-- packages
-- project-a
-- tsconfig.json
-- project-b
-- tsconfig.json
-- shared
-- src
-- UserModel.ts
-- index.ts
-- tsconfig.json
-- tsconfig.base.json
-- package.json
-- tsconfig.json (Default no changes here)
tsconfig.base.json
{
"extends": "../tsconfig.json",
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"emitDecoratorMetadata": true,
"module": "commonjs",
"noEmit": false,
"composite": true
},
"files": [],
"references": [{ "path": "./shared" }]
}
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "lib",
"baseUrl": "./",
"rootDir": "src",
"composite": true,
"experimentalDecorators": true,
"declaration": true,
"declarationMap": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/__tests__/*", "**/__e2e__/*"]
}
{
"extends": "../tsconfig.base.json",
"compileOnSave": true,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"downlevelIteration": true,
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"module": "es2020",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"jsx": "react",
"lib": [
"es2018",
"dom"
],
"paths": {
"@shared": ["../shared/src"]
}
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
},
"references": [
{ "path": "../shared" }
]
}
"paths": {
"@shared/*": ["packages/shared/src/*", "packages/shared/src"]
}
共享tsconfig.json
{
"extends": "../tsconfig.json",
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"emitDecoratorMetadata": true,
"module": "commonjs",
"noEmit": false,
"composite": true
},
"files": [],
"references": [{ "path": "./shared" }]
}
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "lib",
"baseUrl": "./",
"rootDir": "src",
"composite": true,
"experimentalDecorators": true,
"declaration": true,
"declarationMap": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/__tests__/*", "**/__e2e__/*"]
}
{
"extends": "../tsconfig.base.json",
"compileOnSave": true,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"downlevelIteration": true,
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"module": "es2020",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"jsx": "react",
"lib": [
"es2018",
"dom"
],
"paths": {
"@shared": ["../shared/src"]
}
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
},
"references": [
{ "path": "../shared" }
]
}
"paths": {
"@shared/*": ["packages/shared/src/*", "packages/shared/src"]
}
project-a tsconfig.json
{
"extends": "../tsconfig.json",
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"emitDecoratorMetadata": true,
"module": "commonjs",
"noEmit": false,
"composite": true
},
"files": [],
"references": [{ "path": "./shared" }]
}
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "lib",
"baseUrl": "./",
"rootDir": "src",
"composite": true,
"experimentalDecorators": true,
"declaration": true,
"declarationMap": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/__tests__/*", "**/__e2e__/*"]
}
{
"extends": "../tsconfig.base.json",
"compileOnSave": true,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"downlevelIteration": true,
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"module": "es2020",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"jsx": "react",
"lib": [
"es2018",
"dom"
],
"paths": {
"@shared": ["../shared/src"]
}
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
},
"references": [
{ "path": "../shared" }
]
}
"paths": {
"@shared/*": ["packages/shared/src/*", "packages/shared/src"]
}
即使在我尝试在project-a中的shared项目中引用UserModel.ts
时进行了所有这些设置,IDE也无法识别UserModel.ts
项目a中的导入行
从'@shared/UserModel'导入{UserModel}//甚至尝试了“shared/src/UserModel”
如何解决此问题?请更改并重试
project-a tsconfig.json
{
"extends": "../tsconfig.json",
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"emitDecoratorMetadata": true,
"module": "commonjs",
"noEmit": false,
"composite": true
},
"files": [],
"references": [{ "path": "./shared" }]
}
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "lib",
"baseUrl": "./",
"rootDir": "src",
"composite": true,
"experimentalDecorators": true,
"declaration": true,
"declarationMap": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/__tests__/*", "**/__e2e__/*"]
}
{
"extends": "../tsconfig.base.json",
"compileOnSave": true,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"downlevelIteration": true,
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"module": "es2020",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"jsx": "react",
"lib": [
"es2018",
"dom"
],
"paths": {
"@shared": ["../shared/src"]
}
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
},
"references": [
{ "path": "../shared" }
]
}
"paths": {
"@shared/*": ["packages/shared/src/*", "packages/shared/src"]
}
我可以使用以下方法获得要编译的文件夹结构:
packages/project-a/tsconfig.json
{
“编译器选项”:{
“baseUrl”:“,
“路径”:{
“@shared/*”:[”./shared/src/*“]
}
}
}
packages/shared/tsconfig.json
我可以在没有任何内容的情况下编译它
{}
tsconfig.json
{
“文件”:[],
“参考资料”:[
{“路径”:“packages/project-a”},
{“路径”:“包/共享”}
]
}
我的IDE和typescript CLI(npx tsc--build
)都完全没有问题
我不确定你的问题到底是什么,但也许你可以以此为出发点
这篇文章非常有用:这不起作用。我创建了一个项目,如果你试图在工作区中构建角度项目,它会给出一个错误。尝试在这个存储库中构建angular项目-@ShyamalParikh你是说循环依赖关系吗?如果您从
核心应用程序
引用共享
,则显然不允许您从共享
引用核心应用程序
。不管怎么说,这样做是没有意义的,对吧<代码>共享应该提供对其他事物的思考,而不是使用它们。@ShyamalParikh因此基本上只引用共享
,如果共享
中没有任何引用。或者至少不引用任何也引用了shared
自身的项目。我已经删除了@demo/shared中的@demo/mob引用,但它不起作用。请尝试上面的github链接以检查这些不是正常的typescript问题吗@什亚马尔帕里赫