Angular2 Исключение: токен должен быть определен

приложение/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
...

Ответ 1

Это еще одна ошибка, которая застала меня несколько раз. Я забыл (еще раз) экспортировать свой корневой компонент. Это должно быть:

export class AppComponent {

Если бы я потратил время, чтобы посмотреть чуть ближе на трассировку стека (вместо поиска StackOverflow и не обнаружив моей точной проблемы), я бы заметил, что он ссылался на один из файлов, которые я написал, boot.ts:4.

Ответ 2

В моем случае это было просто из-за запятой в конце следующей строки:

import {Component} from 'angular2/core';

Ответ 3

Просто для всех, кто придет сюда, ищет какой-либо свет с этим очень общим сообщением об ошибке, я получал это сообщение из одного из моих тестовых файлов спецификаций, потому что в нижней части того же файла спецификации был установлен макет службы, только что перемещенный он до вершины (до определения теста), и теперь все работает как ожидалось.

Ответ 4

Мне нужно было убедиться, что AppComponent был передан в функцию bootstrap в моей main.ts:

bootstrap(AppComponent);

Ответ 5

Убедитесь, что у вас есть все эти записи, также проверьте приложение Typo Errors вместо 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);

Ответ 6

Я тоже столкнулся с этой проблемой. В моем случае это было из-за расширения Augury, которое металось, потому что у меня был Angular 2.1.3, и он поддерживает 2.3.0 и выше.