【发布时间】:2016-04-17 18:33:24
【问题描述】:
这是完整的错误。
RangeError: Maximum call stack size exceeded
at Injector._instantiate (http://localhost:8000/build.js:36366:63)
at Injector._instantiateProvider (http://localhost:8000/build.js:36244:23)
at Injector._new (http://localhost:8000/build.js:36234:21)
at InjectorInlineStrategy.instantiateProvider (http://localhost:8000/build.js:35998:30)
at ElementDirectiveInlineStrategy.init (http://localhost:8000/build.js:35106:20)
at new AppElement (http://localhost:8000/build.js:34800:24)
at viewFactory_constructor0 (viewFactory_constructor:74:26)
at viewFactory_constructor0 (viewFactory_constructor:76:1)
at viewFactory_constructor0 (viewFactory_constructor:76:1)
at viewFactory_constructor0 (viewFactory_constructor:76:1) <app id="NG2_UPGRADE_0_app_c0">
这是我的源文件。
import 'reflect-metadata'
import {Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser'
console.log('Files have started being compiled and infinite loop has begun');
var TodoCmpTest =
Component({
selector: 'todo-cmp'
})
.View({
template: `<h1>TodoCmpTest</h1>`
})
.Class({
constructor: function(){
console.log('hello');
}
});
var AppComponent =
Component({
selector: 'app',
})
.View({
template: `
<div>
<h1> Hello World </h1>
<todo-cmp></todo-cmp>
</div>
`,
directives: [TodoCmpTest]
// directives: []
})
.Class({
constructor: function () {}
});
bootstrap(AppComponent);
它一遍又一遍地恢复 TodoCmpTest。
如果你交换这两行,它可以工作,但不会加载 TodoCmpTest。
directives: [TodoCmpTest]
// directives: []
您可以通过执行以下操作重现此错误...
1. git clone https://github.com/danielrasmuson/Angular2HelloWorld-StackOverflow
2. use node v5.4.0
3. jspm install
4. npm install
5. npm start
【问题讨论】:
-
我有一个类似的问题,尝试为每个组件使用一个文件,看看是否能解决问题。
-
感谢@Langley 的评论。是的,我在多个文件中都有它,但我合并了示例文件。 ://
-
你用的是什么ng2?您使用的是缩小的还是非缩小的捆绑包?
-
在上面我使用的是 'npm:angular2@2.0.0-beta.1' 并通过上面的 jspm 导入加载它。
-
这听起来与issue 相似(但不等于)。 beta 1(带有缩小)引入了很多问题。您是否尝试过使用 beta 0 或更低版本以及未缩小的捆绑包? (我不知道 JSPM 是如何工作的)
标签: javascript angular jspm