Angular2异常:必须定义令牌

时间:2016-01-02 00:05:46

标签: angular

应用程序/ boot.ts

import {bootstrap} from 'angular2/platform/browser';
import {AppComponent} from './app.component';
bootstrap(AppComponent);

应用程序/ app.component.ts

import {Component} from 'angular2/core';
@Component({
  selector: 'my-app',
  template: '{{title}}'
})
class AppComponent {
  title: "app"
}

错误:

EXCEPTION: Token must be defined!
STACKTRACE:BrowserDomAdapter.logError @ angular2.dev.js:23514
ExceptionHandler.call                 @ angular2.dev.js:1147
(anonymous function)                  @ angular2.dev.js:14801
NgZone._notifyOnError                 @ angular2.dev.js:5796
collection_1.StringMapWrapper.merge.onError @ angular2.dev.js:5700
run                                   @ angular2-polyfills.js:141
(anonymous function)                  @ angular2.dev.js:5719
NgZone.run                            @ angular2.dev.js:5681
ApplicationRef_.bootstrap             @ angular2.dev.js:14906
bootstrap                             @ angular2.dev.js:25054
execute                               @ boot.ts:4
u                                     @ system.src.js:4597
execute                               @ system.src.js:4597
y                                     @ system.src.js:4597
...

7 个答案:

答案 0 :(得分:17)

这是另一个错误,多次引起我的注意。我忘了(再次)导出我的根组件。它应该是:

export class AppComponent {

如果我花时间仔细查看堆栈跟踪(而不是搜索StackOverflow而不是找到我确切的问题),我会注意到它引用了我写的一个文件{{1} }。

答案 1 :(得分:3)

在我的情况下,这只是因为下一行末尾的分号:

import {Component} from 'angular2/core';

答案 2 :(得分:2)

对于那些来这里寻找任何灯光的人来说,这个非常一般的错误信息,我从我的一个测试规范文件中收到了这条消息,因为在同一个spec文件的底部定义了一个模拟服务,只是移动了它位于顶部(在测试定义之前),现在一切都按预期工作。

答案 3 :(得分:1)

我必须确保将AppComponent传递到main.ts中的bootstrap函数中:

bootstrap(AppComponent);

答案 4 :(得分:0)

确保您拥有所有这些条目,同时检查错误错误 App 而不是 AppComponent

<强> app.component.ts

export class AppComponent {
  name: string;

  constructor() {
    this.name = "World";
  }
}

<强> main.ts

import {bootstrap}    from 'angular2/platform/browser';
import {AppComponent} from './app.component';

bootstrap(AppComponent);

答案 5 :(得分:0)

我也遇到过这个问题。在我的情况下,这是因为Augury扩展,因为我有Angular 2.1.3而且它支持2.3.0及以上。

答案 6 :(得分:0)

就我而言,这是 TestBed.get() 的错误 我使用错误的依赖名称作为参数。

let xyzService;

xyzService = TestBed.get(xyzService);

//Changing the above statement with xyzService = TestBed.get(XYZService); worked

这是一个非常愚蠢的错误xD