在构建期间在 ember-cli 应用程序中使用 ENV 值
Posted
技术标签:
【中文标题】在构建期间在 ember-cli 应用程序中使用 ENV 值【英文标题】:Using ENV values in ember-cli app during build 【发布时间】: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
。
【问题讨论】:
【参考方案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 变化 另见:***.com/questions/24902918/… 我一定是做错了什么,但是当我引用 window.EmberENV.APP.API_HOST 时,我收到错误“无法读取未定义的属性 'API_HOST'”。 window.EmberENV 已定义,但 window.EmberENV.APP 未定义。我在这里错过了什么?以上是关于在构建期间在 ember-cli 应用程序中使用 ENV 值的主要内容,如果未能解决你的问题,请参考以下文章
将 Ember-CLI 与 Laravel 或其他后端框架一起使用