Хост окружения на основе среды в приложении Ember CLI

Я пытаюсь настроить адаптер в своем приложении Ember CLI для использования другого хоста на основе среды. В dev я хочу, чтобы это был текущий хост по умолчанию (позволяя мне настроить его с помощью опции --proxy, но в производстве я знаю, что это будет http://some.url.

Я попытался импортировать свой ENV в свой адаптер приложения:

// adapters/application.js
import DS from "ember-data";
import ENV from "../../config/environment";

export default DS.ActiveModelAdapter.extend({
  host: ENV.host
});

но я получаю сообщение об ошибке, что tmp/tree_merger../config/environment.js не существует.

Ответ 1

Вы довольно близки. Вы должны идти только на один шаг в дереве каталогов (когда вы находитесь на маршруте, контроллере и т.д. Вам нужно подняться до двух).

// adapters/application.js
import DS from "ember-data";
import ENV from "../config/environment";

export default DS.ActiveModelAdapter.extend({
  host: ENV.host
});

Документация здесь.

Обратите внимание, что вы, вероятно, не должны определять собственные переменные непосредственно в ENV. Используйте ENV.APP в config/environment.js

var ENV = {
  ...
  APP: {
    // Here you can pass flags/options to your application instance
    // when it is created
    host: 'some_host'
  }
};

И получить доступ к нему таким же образом

import ENV from '../config/environment';

export default DS.ActiveModelAdapter.extend({
  host: ENV.APP.host
});

Ответ 2

Это похоже на работу

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

export default DS.ActiveModelAdapter.extend({
  host: window.MyAppENV.host
});

хотя я не уверен, что это лучший метод.