1

研究错误,

“例外:TypeError:tagDef.requireExtraParent 不是函数”

它实际上在 Google 上返回 0 个结果。

背景:

  • 网站在 Chrome 和 Safari 上运行良好。还没测试过IE。那里是整个单独的噩梦。
  • 错误仅适用于 Firefox(似乎所有版本。目前在 45 上)
  • 我正在使用 System 从 TypeScript 转换为 ES5,并遵循 Angular 快速入门
  • 在 Mac 上,如果这很重要
  • Angular2,测试版 9

该网站非常基本。我已经消除了所有可能的并发症,而且似乎错误只是在引导本身。也许缺少 polyfill?

索引.html

<script>
  System.config({
    transpiler: 'typescript', 
    typescriptOptions: { emitDecoratorMetadata: true }, 
    packages: {
        'js': {
            defaultExtension: 'js'
        }
    } 
  });
  System.import('js/main')
        .then(null, console.error.bind(console));

main.ts(入口点)

/// <reference path="../../node_modules/angular2/typings/browser.d.ts" />

import {HTTP_PROVIDERS} from 'angular2/http';
import {bootstrap}    from 'angular2/platform/browser';
import {AppComponent} from './app/components/app';
import 'rxjs/Rx'

bootstrap(AppComponent, [HTTP_PROVIDERS]); // if i comment this out, the error disappears indicating that it lives somewhere in app.ts.

应用程序.ts

import {Component} from 'angular2/core';

@Component({
    selector: "myapp",
    templateUrl: "templates/app.html",
    directives: [],
    providers: []
})

export class AppComponent {}

我试过什么

添加一些额外的 polyfill,例如 html_parser,它似乎是定义 requireExtraParent 方法的地方。

<script type="text/javascript" src="dist/lib/html_parser.js"></script>

消除任何编译/转译错误。

挖掘得如此之深,以至于谷歌甚至找不到任何东西。

4

2 回答 2

1

您的解决方案很准确

<script type="text/javascript" src="dist/lib/html_parser.js"></script>
于 2016-03-16T01:20:31.437 回答
0

问题是我在 Angular 中使用了一个保留字作为标签(手表)。

<services></services>
<collage></collage>
<watch></watch>  <== problem
<collage></collage>

将其更改为此作品:

<services></services>
<collage></collage>
<watchit></watchit>  <== works fine
<collage></collage>

这是不可能调试的。我不得不逐行注释,直到最终我发现它在 html 中,最终特别是哪一行引入了问题。

只有这样才能发布,如果其他人点击了这个,他们就不会那么疯狂。

于 2016-03-16T16:34:02.787 回答