在我的 angular4 应用程序中正确使用 environment.ts,带有 angular-cli



我使用 Intellij Ultimate 来编写我的 angular 4 应用程序。

我创建了一个新的 Angular 4 项目,它包含environment.tsenvironment.prod.ts,并且环境在angular-cli.json中正确配置。

如何在我的代码中导入它?因为实际上当我构建它时,我会说明要使用哪个环境。它是如何工作的?我需要用Intellij编译一些东西吗?

我尝试谷歌搜索,发现许多人们实际导入特定环境.ts文件的例子。 但这不好,对吧?因为即使我为不同的环境构建,它也将使用相同的 environment.ts 文件。

我该怎么办?

这是一篇关于带有角度cli的环境文件的非常好的文章: http://tattoocoder.com/angular-cli-using-the-environment-option/

总之,您确实导入了environment.ts但将根据环境导入正确的文件。 Angular CLI 将按照本文中的说明处理这个问题。

我在让它工作时遇到了很多麻烦。尝试遵循这么多教程,ng serve只是没有在开发环境之外拾取任何东西。我终于能够使其与以下内容一起工作:

.angular-cli.json 文件

....
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.dev.ts",
"test": "environments/environment.test.ts",
"prod": "environments/environment.prod.ts"
}
....

环境文件,位于 ./src 和以下文件夹结构下

./environments
|--environment.ts
|--environment.test.ts
|--environment.prod.ts
|--environment.dev.ts

环境.ts文件:

export const environment = {
production: false,
apiBase: 'http://dev-server:4200/app/',
env: 'dev'
};

环境.测试.ts 文件

export const environment = {
production: false,
apiBase: 'http://test-server:2080/app/',
env: 'test'
};

环境.prod.ts 文件

export const environment = {
production: true,
apiBase: 'http://prod-server:2080/app/',
env: 'prod'
};

**不要在 src 下创建另一个 environment.ts 文件。

app.module.ts 或要使用环境属性的任何其他组件。请记住从../环境文件夹。犯了一个错误,按照教程并在src文件夹下创建environment.ts,这对我不起作用。

import { environment } from '../environments/environment';
export class AppModule {
constructor() {
console.log('Base Api :' + environment.apiBase +
' production? ' +  environment.production +
' env: ' + environment.env);
}
}

希望这有帮助。

顺便说一下,我用 Angular 5 做到了这一点。

我有同样的问题,并找到了@Ahmed发布的同一篇文章。 但是,这并没有解决我的问题:我只是得到了:

ERROR in XXX/src/app/app.component.ts (19,29): Cannot find module './environment'.

我正在使用通过ng new创建的构建,因此如果您使用的是最新的 angular 客户端,您可能会遇到与我相同的问题。 正如@Ahmed在他的回答评论中所说,获得正确的相对路径很重要。 ng cli的(当前)版本将您的主要应用程序组件放在这里:

projectFolder/app/src/app.component.ts

它将环境文件放在这里:

projectFolder/app/environments/environment.ts

因此,从 app.component 内部包含环境的正确行是:

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

小"功能":environment.ts实际上是开发环境的环境配置文件。 但是,在运行时(由于ng build命令或ng serve命令),此文件将被实际环境状态的任何内容替换。 因此,即使您显式包含开发环境文件,在运行时,您也将获得任何环境的环境变量。 这对我来说似乎很奇怪,但它有效,似乎这就是它的设计方式。

环境对我不起作用@angular/cli1.2.4,但他们确实加载了 Ok 与1.3.2,所以请确保您使用该系列的最新版本。

最新更新