Как импортировать глобальную переменную в Ember? - PullRequest
0 голосов
/ 14 марта 2020

Я новичок в Ember и пытаюсь использовать глобальную переменную в файле config / environment, чтобы затем импортировать ее в несколько адаптеров и моделей. Мне нужно это, чтобы изменить переменную в одном месте, а не редактировать каждый файл. В этом случае глобальной переменной является строка с адресом сервера API. Переменная называется api Root. Я пытался использовать следующую конфигурацию, но она не работает. Скажите, пожалуйста, что нужно сделать, если это возможно в Ember, или, может быть, есть другой способ? Спасибо за любую помощь!

Файл среды:

'use strict';

module.exports = function(environment) {
  let ENV = {
    modulePrefix: 'front',
    environment,
    rootURL: '/',
    locationType: 'auto',
    EmberENV: {
      FEATURES: {
      },
      EXTEND_PROTOTYPES: {
        Date: false
      }
    },

    APP: {
    }
  };

  if (environment === 'development') {
  }

  if (environment === 'test') {
    ENV.locationType = 'none';
    ENV.APP.LOG_ACTIVE_GENERATION = false;
    ENV.APP.LOG_VIEW_LOOKUPS = false;

    ENV.APP.rootElement = '#ember-testing';
    ENV.APP.autoboot = false;
  }

  if (environment === 'production') {
  }

  ENV.apiRoot = 'http://localhost:5555/api';

  return ENV;
};

Адаптер:

import RESTAdapter from '@ember-data/adapter/rest';
import ENV from '../../config/environment';

export default RESTAdapter.extend({
  host: ENV.apiRoot,
  pathForType() {
    return "posts";
  }
});

1 Ответ

1 голос
/ 15 марта 2020

Проблема в том, что ваш относительный путь, вероятно, относится к /config/environment файлу вне вашей папки app. Но он должен ссылаться на config/environment внутри вашей папки app , файл, которого не существует в вашей файловой системе !

Причина в том, что вы не являетесь импорт файла config/environment из файловой системы. Потому что этот файл не существует в браузере. Вместо этого ember-cli будет выполнять этот файл в течение время сборки и отправлять только полученный JSON в ваш браузер, чтобы сделать его доступным на config/environment. Но для всего пути в браузере папка app является root вашего проекта. Вы не можете импортировать что-либо за пределы папки app.

И поэтому ваш config/environment JSON, полученный ember-cli, будет в основном перемещен в папку app.

...