首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角度6- IE11上的GET/POST问题-符号(RxSubscriber)是未定义的

角度6- IE11上的GET/POST问题-符号(RxSubscriber)是未定义的
EN

Stack Overflow用户
提问于 2018-08-27 11:18:06
回答 1查看 1.9K关注 0票数 3

我有一个奇怪的问题,简单的GET/POST工作在IE11上的角度为6-符号(RxSubscriber)是未定义的。同样的问题发生在角5。不幸的是升级没有帮助。这段代码在Chrome和Firefox上运行得很好,但是在IE上我发现了下面的错误。更有趣的是,当ng在IE11上服务和运行时,同样的代码也能很好地工作。.NET是在ASP.NET MVC视图中继承的,如下所示。此外,填充是未注释的,因为它应该在IE上工作。应用程序是组合式的.NET WebForms/.NET MVC/Angular。有什么办法解决吗?

代码语言:javascript
运行
复制
ERROR TypeError: Invalid calling object
   "ERROR"
   {
      [functions]: ,
      __proto__: {
         [functions]: ,
         __proto__: { },
         message: "",
         name: "TypeError",
         Symbol(rxSubscriber)_g.85rjwpn14tf: undefined
      },
      description: "Invalid calling object",
      message: "Invalid calling object",
      name: "TypeError",
      number: -2147418113,
      stack: "TypeError: Invalid calling object
   at scheduleTask (http://localhost:60646/Angular-Test/dist/Angular-Test/polyfills.js:9279:13)
   at ZoneDelegate.prototype.scheduleTask (http://localhost:60646/Angular-Test/dist/Angular-Test/polyfills.js:6722:21)
   at DELEGATE_ZS.onScheduleTask (http://localhost:60646/Angular-Test/dist/Angular-Test/polyfills.js:6612:13)
   at ZoneDelegate.prototype.scheduleTask (http://localhost:60646/Angular-Test/dist/Angular-Test/polyfills.js:6716:17)
   at Zone.prototype.scheduleTask (http://localhost:60646/Angular-Test/dist/Angular-Test/polyfills.js:6547:17)
   at Zone.prototype.scheduleMacroTask (http://localhost:60646/Angular-Test/dist/Angular-Test/polyfills.js:6570:13)
   at scheduleMacroTaskWithCurrentZone (http://localhost:60646/Angular-Test/dist/Angular-Test/polyfills.js:7429:5)
   at Anonymous function (http://localhost:60646/Angular-Test/dist/Angular-Test/polyfills.js:9316:17)
   at proto[name] (http://localhost:60646/Angular-Test/dist/Angular-Test/polyfills.js:7709:17",
      Symbol(rxSubscriber)_g.85rjwpn14tf: undefined
   }

我的代码如下所示:

Index.cshtml

代码语言:javascript
运行
复制
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
    string virtualPathDirectory = !string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings.Get("VirtualDirectoryPath")) ? System.Configuration.ConfigurationManager.AppSettings.Get("VirtualDirectoryPath") : string.Empty;
}

@section head {
    <base href="@virtualPathDirectory/" />
}
<div>
    <app-root></app-root>
</div>

@section scripts {
}

_Layout.cshtml

代码语言:javascript
运行
复制
@using System.Text.RegularExpressions
@using System.Web.Optimization
@{ 
    string virtualPathDirectory = !string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings.Get("VirtualDirectoryPath")) ? System.Configuration.ConfigurationManager.AppSettings.Get("VirtualDirectoryPath") : string.Empty;
}
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    @RenderSection("head", required: false)
</head>
<body>
    @RenderBody()
    <script type="text/javascript" src="@virtualPathDirectory/bootstrap/js/plugins/pace/pace.min.js"></script>
    <script type="text/javascript" src="@virtualPathDirectory/Angular-Test/dist/Angular-Test/runtime.js"></script>
    <script type="text/javascript" src="@virtualPathDirectory/Angular-Test/dist/Angular-Test/polyfills.js"></script>
    <script type="text/javascript" src="@virtualPathDirectory/Angular-Test/dist/Angular-Test/main.js"></script>
    <script type="text/javascript" src="@virtualPathDirectory/Angular-Test/dist/Angular-Test/vendor.js"></script>

    @RenderSection("scripts", required: false)
</body>
</html>

app.module.ts

代码语言:javascript
运行
复制
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule }    from '@angular/common/http';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

app.component.ts

代码语言:javascript
运行
复制
import { Component } from '@angular/core';
import { TestService } from './test.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  constructor(private TestService: TestService) { }

  ngOnInit() {
    this.TestService.GetUser().subscribe(user => this.User = user);
  }

  User: User = new User();
}

export class User {
  id: number;
  name: string;
  username: string;
  email: string;
  address: Address;
  phone: string;
  website: string;
  company: Company;
}

export class Address {
  street: string;
  suite: string;
  city: string;
  zipcode: string;
  geo: Geo;
}

export class Geo {
  lat: string;
  lng: string;
}

export class Company {
  name: string;
  catchPhrase: string;
  bs: string;
}

app.component.html

代码语言:javascript
运行
复制
ID: {{ User.id }}<br />
name: {{ User.name }}<br />
username: {{ User.username }}

test.service.ts

代码语言:javascript
运行
复制
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class TestService {

  constructor(private http: HttpClient) { }

  GetUser(): Observable<User> {
    return this.http.get<User>('https://jsonplaceholder.typicode.com/users/1').pipe();
  }
}

export class User {
  id: number;
  name: string;
  username: string;
  email: string;
  address: Address;
  phone: string;
  website: string;
  company: Company;
}

export class Address {
  street: string;
  suite: string;
  city: string;
  zipcode: string;
  geo: Geo;
}

export class Geo {
  lat: string;
  lng: string;
}

export class Company {
  name: string;
  catchPhrase: string;
  bs: string;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-28 07:25:36

好吧,我发现了一个问题。问题并不像我最初想的那样与.NET WebForms/.NET MVC/角组合有关。忘了我把pace.min.js放在了角脚本之前,这是问题的根源。当我移动这个脚本后,角的问题消失了。我通过在zone.js上对IE11进行调试来跟踪它,并在IE11控制台中得到了两个相同错误的提示。它看起来像是pace.js与zone.js的冲突,因为所有的XHR(对XHR的角度重建请求/POST请求)都失败了。不知道它为什么在Chrome或Firefox中正确工作,但是如果您在角脚本之前的任何地方使用pace.js,请考虑在它们后面移动它,如下所示:

代码语言:javascript
运行
复制
<script type="text/javascript" src="@virtualPathDirectory/Angular-Test/dist/Angular-Test/runtime.js"></script>
<script type="text/javascript" src="@virtualPathDirectory/Angular-Test/dist/Angular-Test/polyfills.js"></script>
<script type="text/javascript" src="@virtualPathDirectory/Angular-Test/dist/Angular-Test/main.js"></script>
<script type="text/javascript" src="@virtualPathDirectory/Angular-Test/dist/Angular-Test/vendor.js"></script>
<script type="text/javascript" src="@virtualPathDirectory/bootstrap/js/plugins/pace/pace.min.js"></script>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52038123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档