【发布时间】:2020-05-08 12:06:19
【问题描述】:
我正在尝试从 Angular 9 库中读取环境变量,但在构建库时出错
这里是实现
从 'projects/falcon-core/src/lib/view-models/environment-view-model' 导入 { EnvironmentViewModel };
class EnvironmentImpl implements EnvironmentViewModel {
production = false;
openID = {
authority: "https://dev-816623.okta.com/oauth2/XXXXXXXXXXXXX",
client_id: "XXXXXXXXXXXXX",
redirect_uri: "https://localhost:4200/auth-callback",
post_logout_redirect_uri: "https://localhost:4200",
response_type: "code",
scope : "openid profile email"
}
}
export const environment = new EnvironmentImpl();
查看模型
export abstract class EnvironmentViewModel {
abstract readonly production: boolean;
abstract readonly openID: IOpenIdViewModel;
}
export declare interface IOpenIdViewModel {
authority?: string;
client_id?: string;
redirect_uri?: string;
response_type?: string;
scope?: string;
silent_redirect_uri?: string;
post_logout_redirect_uri?: string;
filterProtocolClaims?: boolean
loadUserInfo?: boolean
automaticSilentRenew?: boolean;
monitorSession?: boolean;
accessTokenExpiringNotificationTime?: number;
checkSessionInterval?: number;
silentRequestTimeout?: number;
}
在模块中
import { environment } from 'src/environments/environment';
providers: [
{ provide: EnvironmentViewModel, useValue: environment }
]
tsconfig.lib.json
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/lib",
"target": "es2015",
"declaration": true,
"inlineSources": true,
"types": [],
"lib": [
"dom",
"es2018"
]
},
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"enableResourceInlining": true
},
"includes": ["../../src/environments/environment.ts"],
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}
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",
"lib": [
"es2018",
"dom"
],
"paths": {
"@falcon/core": [
"dist/@falcon-ng/core"
]
}
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
}
}
不断收到错误
ERROR: projects/falcon-core/src/lib/falcon-core.module.ts:28:29 - error TS6059: File '/Users/macbook/Projects/project-falcon/src/environments/environment.ts' is not under 'rootDir' '/Users/macbook/Projects/project-falcon/projects/falcon-core/src'. 'rootDir' is expected to contain all source files.
28 import { environment } from 'src/environments/environment';
【问题讨论】:
-
请分享您的 tsconfig.json 文件,问题就在那里。
-
@satanTime 你的意思是库一 tsconfig.lib.json 吗?
-
是的,通常你应该有几个 - 一个在 root 中,1 或 2 个在 src 中用于应用程序和规范。
-
更新了 tsconfig.lib.json 文件
-
你还需要分享
"extends": "../../tsconfig.json",它是一个家长。
标签: angular typescript angular-module angular-library