【问题标题】:Using ENV values in ember-cli app during build在构建期间在 ember-cli 应用程序中使用 ENV 值
【发布时间】:2014-10-01 00:49:09
【问题描述】:

我想根据构建环境设置我的 RESTAdapter 主机。

我假设该值可以像这样存储在config/environment.js 中:

if (environment === 'development') {
  ENV.API_ENDPOINT = 'http://localhost:8080';
}

if (environment === 'production') {
  ENV.API_ENDPOINT = 'http://api.myserver.com';
}

但我不确定如何在构建过程中将信息插入adapter/application.js

【问题讨论】:

    标签: ember.js ember-cli


    【解决方案1】:

    您在 config/environment.js 中定义这样的设置:

      // snip
      APP: {
        // Here you can pass flags/options to your application instance
        // when it is created
        API_HOST: 'http://192.168.1.37:3000' // default setting
      }
    };
    
    if (environment === 'development') {
      ENV.APP.LOG_TRANSITIONS = true;
      ENV.APP.API_HOST = 'http://192.168.1.37:3000'; // override
    }
    

    然后您可以像这样在其他文件中使用该设置:

    // app/adapters/application.js:
    import DS from "ember-data";
    
    export default DS.RESTAdapter.extend({
       host: window.MyAppENV.APP.API_HOST
    });
    

    MyApp 替换为您的应用程序。

    使用ember --environment 选项切换到构建环境:

    ember serve --environment production
    

    ember build --environment development
    

    我还没有看到是否有一种方法可以动态提供值,但是您当然可以提供任意数量的环境。

    更新:为完整性添加,根据 Weston 的评论,Environments 记录了此功能。

    【讨论】:

    • 你所拥有的正是我所需要的。动态可能具有误导性,我的意思是在构建期间选择环境。
    • 现在我知道要问什么了,我在Environments找到了文档
    • @Millisami 我已经为当前机制更新了上面的答案。它随着 0.0.47 变化
    • 我一定是做错了什么,但是当我引用 window.EmberENV.APP.API_HOST 时,我收到错误“无法读取未定义的属性 'API_HOST'”。 window.EmberENV 已定义,但 window.EmberENV.APP 未定义。我在这里错过了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2021-10-18
    • 2016-02-29
    相关资源
    最近更新 更多