【问题标题】:Ember generated service raising error on injectionEmber 在注入时生成服务引发错误
【发布时间】:2018-04-13 08:27:20
【问题描述】:

我是 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 "服务被注入的地方"

import Route from '@ember/routing/route';

export default Route.extend({

  authentication: Ember.inject.service(),

  setupController(controller) {
    this._super(...arguments);
  }
});

【问题讨论】:

  • 您共享的代码很好,您可以更改的一件事是使用import { inject } from "@ember/service"; 而不是依赖全局Ember.inject.service

标签: ember.js service controller inject


【解决方案1】:

在 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: []
});

【讨论】:

    【解决方案2】:

    看起来您使用的是 Ember 2.16(正如其他人所回答的那样,它使用新的组件模块化,您所遵循的教程看起来像 2.15 或更早版本,正如您在帖子中提到的那样)。

    您也应该在新路线中使用新模块是有道理的:

    import Route from '@ember/routing/route';
    import { inject as service } from "@ember/service";
    
    export default Route.extend({
      authentication: service()
    });
    

    一个声明:您显示的代码是route 类(路由层次结构中有controllers,还有不属于路由层次结构的components)。您将能够在上述任何级别中注入您的全新服务。

    【讨论】:

      【解决方案3】:

      感谢大家提供有关 EmberJS 的所有信息。但是事实证明,我需要做的就是重新启动本地服务器 -.-

      【讨论】:

      • 我收到了同样的错误信息,重新启动服务器解决了这个问题。感谢您在这里写下来。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2018-11-21
      • 2023-04-07
      • 2014-06-06
      • 1970-01-01
      相关资源
      最近更新 更多