gpt4 book ai didi

javascript - 库的 Angular CLI 6.x 环境文件

转载 作者:数据小太阳 更新时间:2023-10-29 04:45:13 25 4
gpt4 key购买 nike

我已经使用新的 CLI 6.x 创建了一个库。我还在其中创建了一个 Angular 服务,我想为我的开发和生产环境使用不同的 URL。所以我在我的库文件夹中创建了一个 environment.ts 和一个 environment.prod.ts 文件。

//dev
export const environment = {
production: false,
url: 'dev-url'
};

//prod
export const environment = {
production: true,
url: 'prod-url'
};

我还在 angular.json 文件中添加了 'fileReplacements' 属性:

"configurations": {
"production": {
"fileReplacements": [{
"replace": "projects/tk-shared/src/environments/environment.ts",
"with": "projects/tk-shared/src/environments/environment.prod.ts"
}],
"project": "projects/tk-shared/ng-package.prod.json"
}
}

使用 ng build tk-shared 编译库可以工作并使用 dev 设置,但是当使用 ng build --prod tk-shared< 编译时 我收到以下错误:

Schema validation failed with the following errors: Data path "" should NOT have additional properties(fileReplacements).

我的提示是,原因是 tk-sharedangular.json 中有 projectType: "library" 属性。
无论如何,是否可以在库中使用环境文件?

最佳答案

谢谢,@R。理查兹为我指出了正确的解决方案!这两个来源帮助我弄清楚如何正确地进行这种注入(inject):LINK1LINK2 .

所以我做了...

创建了一个 InjectionToken 并修改了我的 TkSharedModule:

export const BASE_URL = new InjectionToken<string>('BASE_URL');
//...
export class TkSharedModule {
static forRoot(host: string) {
return {
ngModule: TkSharedModule,
providers: [{
provide: BASE_URL,
useValue: host
}]
}
}
}

从我的 AppModule 中的 environment 文件中为这个 token 提供了一个值:

import {environment} from '../environments/environment';
//...
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
TkSharedModule.forRoot(environment.url)
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

最后在我的服务中注入(inject)了这个值:

//MyServiceService

import { BASE_URL } from '../tk-shared.module';

constructor(@Inject(BASE_URL) BASE_URL: string) {
console.log('base url', BASE_URL);
}

关于javascript - 库的 Angular CLI 6.x 环境文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50840617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com