如何在Ember中导入全局变量?

How to import global variable in Ember?

我是 Ember 的新手,我正在尝试使用配置/环境文件中的全局变量,然后将其导入到多个适配器和模型中。我需要这个来更改一个地方的变量,而不是编辑每个文件。 在这种情况下,全局变量是一个带有 api 服务器地址的字符串。该变量名为 apiRoot。我尝试使用以下配置,但它不起作用。请告诉我需要做什么,如果这在 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";
  }
});

问题是您的相对路径可能指的是您的 app 文件夹 外部 /config/environment 文件。但它应该引用 app 文件夹中的 config/environment,一个 在你的文件系统中不存在的文件 !

原因是您没有从文件系统导入 config/environment 文件。因为该文件在浏览器中不存在。相反,ember-cli 将在 构建时间 期间 执行 该文件,并仅将生成的 JSON 发送到您的浏览器并使其可用在 config/environment。但是对于浏览器中的所有路径,app 文件夹是项目的 root。您不能导入 app 文件夹之外的内容。

所以你ember-cli制作的config/environmentJSON基本上会被移动到app文件夹中。