angular - System.import 构建后不搜索文件(Angular2)

标签 angular tomcat typescript system

目前我正在使用 system.import 在运行时动态加载文件以更改我的环境变量。

当我只使用 ng serve 时这很好用。我转到该文件,在那里更改我的环境变量,刷新页面后它更改了我的 API 网址。

现在我正在尝试将它与 tomcat 一起使用。我构建我的应用程序并将其部署到 tomcat。它找到了文件并构建得很好,但是当我稍后更改文件时,它不再像我在本地使用 ng serve 那样更新。

我的代码:

app.component.ts

ngOnInit()
{
    this.loadApiLinks();
}

loadApiLinks() {
    System.import('../../../deployment.ts').then(deployment=>{
        environment.API_ROOT = deployment.getApiRoot();
        environment.API_ENDPOINT = deployment.getApiEndpoint();
        this.isDataAvailable = true;
        console.log(environment.API_ROOT);
    });
}

我加载的文件:

export enum Environment {
PRODUCTION,
ACCEPTANCE,
DEVELOPMENT,
LOCAL}
// Edit this variable to change the working environment
let environment: Environment = Environment.DEVELOPMENT;

let API_ROOT_ACC: string = "https://hi02549:8080/campus_acceptance";
let API_ENDPOINT_ACC: string = "https://hi02549:8080/campus_acceptance/api/";

let API_ROOT_DEV: string = "https://hi02549:8080/campus";
let API_ENDPOINT_DEV: string = "https://hi02549:8080/campus/api/";

let API_ROOT_LOCAL: string = "http://localhost:8080/campus";
let API_ENDPOINT_LOCAL: string = "http://localhost:8080/campus/api/";

export function getApiRoot() {
    switch(environment) {
        case Environment.ACCEPTANCE:
            return API_ROOT_ACC;
        case Environment.DEVELOPMENT:
            return API_ROOT_DEV;
        case Environment.LOCAL:
            return API_ROOT_LOCAL;
        default:
            return null;
    }
}

export function getApiEndpoint() {
    switch(environment) {
        case Environment.ACCEPTANCE:
            return API_ENDPOINT_ACC;
        case Environment.DEVELOPMENT:
            return API_ENDPOINT_DEV;
        case Environment.LOCAL:
            return API_ENDPOINT_LOCAL;
        default:
            return null;
    }
}

System.import 的工作方式与我想象的不同吗?或者我做错了什么? 我已经尝试将文件粘贴到所有可能的位置。

最佳答案

我想你应该明白 ng-serve 运行一个开发构建服务器,内置文件观察器,所以它会在文件更改时更新构建。

但是,当您在生产环境中运行应用程序或在任何网络服务器上部署应用程序时,它不会自动再次构建 bundle 。您通常必须使用 JSON 文件进行配置,并且作为引导过程的一部分,对该 JSON 进行 Ajax 调用并使用配置。

关于angular - System.import 构建后不搜索文件(Angular2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44515717/

相关文章:

html - 如何显示具有 Angular 功能的HTML?

javascript - 在 angular2 中添加成功页面

java - 如何更改默认的java方法

java - 如何在 tomcat 中使用 realm login-config 使登录无效并登录

tomcat - 使用 JNDI 在 Tomcat 上设置 WMQ V8 连接工厂

javascript - 从 Angular 6 中的重复控制中获取值

javascript - 如何使用angular 2在URl中使用问号

node.js - 执行新应用程序时出现 Angular 7 错误,错误 : Cannot find module 'temp' ,

postgresql - Sequelize Include 在没有结果的情况下不起作用

node.js - VS 代码 : help debugging angular 2 with express