Ember js 1.12.0 - 无法创建实例

时间:2015-09-08 20:50:03

标签: javascript ember.js ember-cli

我正在尝试将配置文件注入我的所有路由,控制器和组件,而不是在每个文件中调用import config from '../config/environment'。但是我得到以下错误:

  

未捕获错误:无法创建“config:main”实例。很可能是一个不正确定义的类或无效的模块导出。

以下是我通过coffeescript呈现的代码。

// app/initializers/config.js

define('app/initializers/config', ['exports', 'app/config/environment'], function (exports, Config) {

'use strict';

var ConfigInitializer, initialize;

initialize = function (container, app) {
  var config;
  config = {
    config: Config['default']
  };
  app.register('config:main', config);
  app.inject('route', 'config', 'config:main');
  app.inject('controller', 'config', 'config:main');
  app.inject('component', 'config', 'config:main');
};

ConfigInitializer = {
  name: 'config',
  initialize: initialize
};

exports['default'] = ConfigInitializer;

exports.initialize = initialize;

我错过了什么?

我已经使用断点和我的环境路径逐步完成了所有环境.js文件是正确的。所以我知道不是那样的。我想我缺少一些关于依赖注入的基本知识。

2 个答案:

答案 0 :(得分:3)

除了一件事,代码中的一切看起来都很好。默认情况下,Ember希望注册工厂而不是实例。因此,一旦属性被注入,它就会尝试从已注册的工厂获取实例。但在你的情况下,它不是工厂,它本身就是一个实例(对象)。因此,您唯一要做的就是说Ember按原样使用注册对象,而不是试图获取实例。要实现此目的,只需将wh_qa_location = (self.env["stock.warehouse"].search([("partner_id.id", "=", self.create_uid.company_id.id)])).wh_qc_stock_loc_id 添加到instantiate: false选项:

register

答案 1 :(得分:1)

抱怨在初始化时无法实例化新的配置对象。尝试将配置对象更改为Ember.Service

import Ember from 'ember'

initialize = function(container, app) { 
  var config = Ember.Service.extend({
    config: Config['default']
  }
  ...
}