在构建期间在 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 中导入 amd 模块?

将 Ember-CLI 与 Laravel 或其他后端框架一起使用

ember-cli 元配置/环境文件

如何在 ember-cli 插件组件中找到 npm 模块

如何调试在 phantomjs 中运行的 ember-cli 测试

您如何在开发中从 https://localhost:4200 提供 ember-cli