Ember 生成的服务在注入时引发错误
Ember generated service raising error on injection
我是 EmberJS 的新手,正在学习教程。我在教程的一部分开始谈论创建服务并将它们注入您的控制器(我不是 100% 确定它是否是控制器,但我来自 AngularJS,它看起来非常相似).
在我的 Ember 项目的终端中,我 运行 命令 ember g service authentication
。我可以看到该服务是在我的应用程序的服务目录中的文件 authentication.js
中创建的。然而,当我尝试将它注入我的控制器时,当我在本地提供应用程序时,我在浏览器中遇到了这个问题,
Error: Assertion Failed: Attempting to inject an unknown injection: 'service:authentication
这可能是因为我使用的 Ember 版本比教程中的版本更新,并且现在有不同的方式来注入服务?我问是因为这是教程中服务的语法
import ember from 'ember'
export default Ember.Service.extend({
records: []
});
这是我现在拥有的语法,是在使用 ember new
构建项目时自动创建的
import Service from '@ember/service';
export default Service.extend({
records: []
});
org.js "Where service is being injected"
import Route from '@ember/routing/route';
export default Route.extend({
authentication: Ember.inject.service(),
setupController(controller) {
this._super(...arguments);
}
});
在 ember 版本 2.16 中,您可以利用 javascript 模块 api 进行导入。
Refer this blog post
Refer this full list
如果您的 ember 版本低于 2.16,则
import ember from 'ember'
export default Ember.Service.extend({
records: []
});
如果ember 版本 >= 2.16 那么下面是正确的导入方式,
import Service from '@ember/service';
export default Service.extend({
records: []
});
看起来您正在使用 Ember 2.16(正如其他人所回答的那样,它使用了新的组件模块化,您正在学习的教程看起来像 2.15 或更早版本,正如您在 post).
您也应该在新路线中使用新模块是有道理的:
import Route from '@ember/routing/route';
import { inject as service } from "@ember/service";
export default Route.extend({
authentication: service()
});
声明:您显示的代码是 route
class(路由层次结构中有 controllers
,也有 components
不是路由层次结构的一部分)。您将能够在任何提到的级别中注入您的全新服务。
谢谢大家关于EmberJS.However的所有信息原来我需要做的就是重启我的本地服务器-.-
我是 EmberJS 的新手,正在学习教程。我在教程的一部分开始谈论创建服务并将它们注入您的控制器(我不是 100% 确定它是否是控制器,但我来自 AngularJS,它看起来非常相似).
在我的 Ember 项目的终端中,我 运行 命令 ember g service authentication
。我可以看到该服务是在我的应用程序的服务目录中的文件 authentication.js
中创建的。然而,当我尝试将它注入我的控制器时,当我在本地提供应用程序时,我在浏览器中遇到了这个问题,
Error: Assertion Failed: Attempting to inject an unknown injection: 'service:authentication
这可能是因为我使用的 Ember 版本比教程中的版本更新,并且现在有不同的方式来注入服务?我问是因为这是教程中服务的语法
import ember from 'ember'
export default Ember.Service.extend({
records: []
});
这是我现在拥有的语法,是在使用 ember new
import Service from '@ember/service';
export default Service.extend({
records: []
});
org.js "Where service is being injected"
import Route from '@ember/routing/route';
export default Route.extend({
authentication: Ember.inject.service(),
setupController(controller) {
this._super(...arguments);
}
});
在 ember 版本 2.16 中,您可以利用 javascript 模块 api 进行导入。
Refer this blog post
Refer this full list
如果您的 ember 版本低于 2.16,则
import ember from 'ember'
export default Ember.Service.extend({
records: []
});
如果ember 版本 >= 2.16 那么下面是正确的导入方式,
import Service from '@ember/service';
export default Service.extend({
records: []
});
看起来您正在使用 Ember 2.16(正如其他人所回答的那样,它使用了新的组件模块化,您正在学习的教程看起来像 2.15 或更早版本,正如您在 post).
您也应该在新路线中使用新模块是有道理的:
import Route from '@ember/routing/route';
import { inject as service } from "@ember/service";
export default Route.extend({
authentication: service()
});
声明:您显示的代码是 route
class(路由层次结构中有 controllers
,也有 components
不是路由层次结构的一部分)。您将能够在任何提到的级别中注入您的全新服务。
谢谢大家关于EmberJS.However的所有信息原来我需要做的就是重启我的本地服务器-.-