【发布时间】:2020-03-30 21:50:02
【问题描述】:
我用this 教程创建了两个库:
ng new my-library --create-application=false
ng generate library core
ng generate library shared
我想将 CoreModule 导入 SharedModule:
import { NgModule } from '@angular/core';
import { CoreModule } from '???';
@NgModule({
declarations: [],
imports: [
CoreModule
],
exports: []
})
export class SharedModule { }
CoreModule 中是 public-api.ts:
export * from './lib/core.module';
我尝试编辑项目/shared/tsconfig.lib.json:
"paths": {
"library/core": ["../../dist/core/"],
}
但是当我运行ng build shared:
错误:projects/shared/src/lib/shared.module.ts(2,32):错误 TS2307:找不到模块“库/核心”。 projects/shared/src/lib/shared.module.ts(8,5):错误 TS2304:找不到名称“CoreModule”。
在同一工作区的两个库之间导入模块的正确方法是什么?谢谢
编辑:tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"module": "esnext",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
],
"paths": {
"core": [
"dist/core"
],
"core/*": [
"dist/core/*"
],
"shared": [
"dist/shared"
],
"shared/*": [
"dist/shared/*"
]
}
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
}
}
核心库tsconfig.lib.json:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/lib",
"target": "es2015",
"declaration": true,
"inlineSources": true,
"types": [],
"lib": [
"dom",
"es2018"
]
},
"angularCompilerOptions": {
"annotateForClosureCompiler": true,
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"enableResourceInlining": true
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}
共享库 tsconfig.lib.json
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/lib",
"target": "es2015",
"declaration": true,
"inlineSources": true,
"types": [],
"lib": [
"dom",
"es2018"
]
},
"angularCompilerOptions": {
"annotateForClosureCompiler": true,
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"enableResourceInlining": true,
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}
【问题讨论】:
-
您的
import { CoreModule } from '???'应该具有核心模块的.module.ts文件的路径。这应该足以导入它。
标签: angular