gpt4 book ai didi

Angular 库 - 'rootDir' 预计包含所有源文件。 (环境.ts)

转载 作者:行者123 更新时间:2023-12-03 19:32:22 26 4
gpt4 key购买 nike

我正在开发我的第一个 Angular 7 库,但是在尝试编译该库时出现此错误。

错误:错误 TS6059:文件 '...environment.ts' 不在 'rootDir' 'my-angular-library\projects\my-library\src' 下。 'rootDir' 应包含所有源文件。

看着我的树,我有:

-projects
-my-library
-src
-src
- environments

在我的类里面,我有以下导入:
import { environment } from "src/environments/environment";

我正在检查他们在 typescript 中提到错误的其他线程,但是我正在运行最新版本的“ typescript ”:“〜3.1.1”。

其他线程提到了错误配置的 rootDir。我检查了我的项目,我没有在任何配置文件中定义 rootDir。

我不需要为项目添加环境吗?

最佳答案

库引用的所有文件都需要包含在 project\my-library\src 中目录(或从另一个模块中提取)以使库正确构建。

我认为您也不希望将环境文件直接包含在您的库中。在构建应用程序期间,该环境文件将在应用程序中被切换出去。但是,使用库,您构建它,然后将其导入到您已经构建的应用程序中,因此该文件不会被适本地切换。

我知道的最佳解决方案是创建一个 Token在您的库中并从库的 api 中导出。然后在使用该库的应用程序中,您将通过使用该 token 的 DI 容器提供环境。

例如,在您的库中,您将执行以下操作:
project\my-library\src\lib\environment-token.ts

import { InjectionToken } from '@angular/core';

export let ENVIRONMENT_TOKEN = new InjectionToken('environment');
project\my-library\src\public_api.ts
export * from './lib/environment-token.ts'
project\my-library\src\lib\component.ts
import {
Component,
Inject
} from '@angular/core';

import {
ENVIRONMENT_TOKEN
} from './environment-token';

@Component({
selector: 'aa-component',
template: `
})
export class Component {
constructor(@Inject(ENVIRONMENT_TOKEN) private environment: any) {
}
}

然后在您的应用程序中,您将执行以下操作:
import {
NgModule
} from '@angular/core';

import {
YOUR_MODULE,
ENVIRONMENT_TOKEN
} from 'YOUR_LIB_NAME';

import {
environment
} from './environments/environment';

import {
AppComponent
} from './app.component.ts'

@NgModule({
declarations: [
AppComponent
],
imports: [
YOUR_MODULE
providers: [
{ provide: ENVIRONMENT_TOKEN, useFactory: () => environment }
],
bootstrap: [AppComponent]
})
export class AppModule {}

关于Angular 库 - 'rootDir' 预计包含所有源文件。 (环境.ts),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53208513/

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