我正在https://angular.io/docs/ts/latest/tutorial/toh-pt2.html完成教程并在创建英雄阵列后出现以下错误:
Error: Error: Unexpected value 'AppComponent' declared by the module 'AppModule'
at new BaseException (localhost:3000/node_modules/@angular/compiler//bundles/compiler.umd.js:5116:27)
at eval (localhost:3000/node_modules/@angular/compiler//bundles/compiler.umd.js:13274:35)
at Array.forEach (native)
at CompileMetadataResolver.getNgModuleMetadata (localhost:3000/node_modules/@angular/compiler//bundles/compiler.umd.js:13261:53)
at RuntimeCompiler._compileComponents (localhost:3000/node_modules/@angular/compiler//bundles/compiler.umd.js:15845:51)
at RuntimeCompiler._compileModuleAndComponents (localhost:3000/node_modules/@angular/compiler//bundles/compiler.umd.js:15769:41)
at RuntimeCompiler.compileModuleAsync (localhost:3000/node_modules/@angular/compiler//bundles/compiler.umd.js:15746:25)
at PlatformRef_._bootstrapModuleWithZone (localhost:3000/node_modules/@angular/core//bundles/core.umd.js:9991:29)
at PlatformRef_.bootstrapModule (localhost:3000/node_modules/@angular/core//bundles/core.umd.js:9984:25)
at Object.eval (localhost:3000/app/main.js:4:53)
Evaluating localhost:3000/app/main.js
Error loading localhost:3000/app/main.js
此时我的app.module.ts文件是:
import { NgModule } from '@angular/core';
import { BrowserModule }from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule {}
此时我的app.components.ts文件是:
import { Component } from '@angular/core';
export class Hero {
id: number;
name: string;
}
@Component ({
selector: 'my-app',
template: `
<h1>{{title}}</h1>
<h2>My Heroes</h2>
<ul class="heroes">
<li *ngFor="let hero of heroes">
<span class="badge">{{hero.id}}</span> {{hero.name}}
</li>
</ul>
<h2>{{hero.name}} details!</h2>
<div><label>id: </label>{{hero.id}}</div>
<div>
<label>name: </label>
<input [(ngModel)]="hero.name" placeholder="name">
</div>
`
})
const HEROES: Hero[] = [
{ id: 11, name: 'Mr. Nice' },
{ id: 12, name: 'Narco' },
{ id: 13, name: 'Bombasto' },
{ id: 14, name: 'Celeritas' },
{ id: 15, name: 'Magneta' },
{ id: 16, name: 'RubberMan' },
{ id: 17, name: 'Dynama' },
{ id: 18, name: 'Dr IQ' },
{ id: 19, name: 'Magma' },
{ id: 20, name: 'Tornado' }
];
export class AppComponent {
title = 'Tour or Heroes';
heroes = HEROES;
}
到目前为止,一切都在努力。 Angular的新手,不知道如何调试它。
编辑:
错误发生在(index)at:
<!-- 2. Configure SystemJS -->
<script src = "systemjs.config.js"></script>
<script>
System.import('app').catch(function(err) {
console.error(err);
});
</script>
</head>
谢谢,
答案 0 :(得分:34)
装饰器是遵循装饰器声明的相关类或变量。
在您的代码中,@compoment
装饰器位于const HEROES
之上且必须位于类AppComponent
之上。
所以你的代码应该如下:
import { Component } from '@angular/core';
export class Hero {
id: number;
name: string;
}
export const HEROES: Hero[] = [
{ id: 11, name: 'Mr. Nice' },
{ id: 12, name: 'Narco' },
{ id: 13, name: 'Bombasto' },
{ id: 14, name: 'Celeritas' },
{ id: 15, name: 'Magneta' },
{ id: 16, name: 'RubberMan' },
{ id: 17, name: 'Dynama' },
{ id: 18, name: 'Dr IQ' },
{ id: 19, name: 'Magma' },
{ id: 20, name: 'Tornado' }
];
@Component ({
selector: 'my-app',
template: `
<h1>{{title}}</h1>
<h2>My Heroes</h2>
<ul class="heroes">
<li *ngFor="let hero of heroes">
<span class="badge">{{hero.id}}</span> {{hero.name}}
</li>
</ul>
<h2>{{hero.name}} details!</h2>
<div><label>id: </label>{{hero.id}}</div>
<div>
<label>name: </label>
<input [(ngModel)]="hero.name" placeholder="name">
</div>
`
})
export class AppComponent {
title = 'Tour or Heroes';
heroes = HEROES;
}
答案 1 :(得分:16)
我会很快注意到这个错误可以从@Component
声明错误的任何方式抛出 - 即,@Component({});
- (注意分号)。
如果收到此错误,请务必检查您的语法是否正确。
从2.0.0-rc.6开始为真。
答案 2 :(得分:0)
当我遇到它时,我会检查它很长时间。最后,在@Component({})的末尾,还有一个&#39 ;;&#39;。未知如此
答案 3 :(得分:0)
我从单独的文件夹中的根文件夹添加了一些组件后出现此错误。问题是使用./filename作为templateUrl和styleUrls的路径,在删除./后错误消失了。
答案 4 :(得分:0)
在我的例子中,我已经在组件类定义上声明了一个类,如下所示。我已将类MyClass定义移到导出类下面并且它有效。 所以我假设导出类必须是组件文件中的第一个声明。
class MyClass {
}
export class MyComponent implements OnInit {
答案 5 :(得分:0)
如果在同一文件上的应用程序组件声明之前有@Injectable()
类,则也可能存在此错误。