gpt4 book ai didi

javascript - Ember js 1.12.0 - 无法创建实例

转载 作者:行者123 更新时间:2023-11-30 09:59:21 26 4
gpt4 key购买 nike

我试图将我的配置文件注入(inject)到我的所有路由、 Controller 和组件中,而不是在每个文件中调用 import config from '../config/environment'。但是我收到以下错误:

Uncaught Error: Failed to create an instance of 'config:main'. Most likely an improperly defined class or an invalid module export.

下面是我通过 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;

我错过了什么?

我已经使用断点逐步完成所有操作,我的 environment.js 文件路径是正确的。所以我知道不是那样。我想我遗漏了一些关于依赖注入(inject)的基本知识。

最佳答案

除一件事外,您的代码中的一切看起来都很好。默认情况下,Ember 希望注册工厂而不是实例。因此,一旦属性被注入(inject),它就会尝试从已注册的工厂中获取一个实例。但在您的情况下,它不是工厂,而是实例(对象)本身。因此,您唯一需要做的就是让 Ember 按原样使用已注册的对象,而无需尝试获取实例。要实现这一点,只需将 instantiate: false 添加到 register 选项:

app.register('config:main', config, {instantiate: false});

关于javascript - Ember js 1.12.0 - 无法创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32467006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com