在构建期间在ember-cli app中使用ENV值

Wes*_*ton 11 ember.js ember-cli

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

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

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

if (environment === 'production') {
  ENV.API_ENDPOINT = 'http://api.myserver.com';
}
Run Code Online (Sandbox Code Playgroud)

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

Lee*_*eft 24

您可以在以下位置定义如下设置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
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以在其他文件中使用此设置,如下所示:

// app/adapters/application.js:
import DS from "ember-data";

export default DS.RESTAdapter.extend({
   host: window.MyAppENV.APP.API_HOST
});
Run Code Online (Sandbox Code Playgroud)

替换MyApp为您的应用程序.

您可以使用以下ember --environment选项切换到构建环境:

ember serve --environment production
Run Code Online (Sandbox Code Playgroud)

要么

ember build --environment development
Run Code Online (Sandbox Code Playgroud)

我还没有看到是否有办法动态提供价值,但你可以提供任意数量的环境.

更新:添加完整性,并根据Weston的评论,环境记录此功能.

  • 我一定做错了,但是当我引用window.EmberENV.APP.API_HOST时,我收到错误'无法读取属性'未定义'的API_HOST'.window.EmberENV已定义,但window.EmberENV.APP未定义.我在这里错过了什么? (6认同)