2017-12-07 5 views
2

I는 Microsoft 가장자리에 다음과 같은 자바 스크립트 오류를 ​​얻고을 지원하지 않습니다개체 속성 또는 메서드 'JSON'servicestack 클라이언트 HTTP 포스트

"를 속성 또는 메서드 'JSON'를 지원하지 않는 객체"

enter image description here

나는이 마이크로 소프트 에지 자바 스크립트 오류가 ServiceStack Typescript JsonServiceClient에서 오는 것으로 의심,이 NPM 패키지의 소스 코드는 여기에

here는 타이의 조각입니다 찾을 수 있습니다 나는 ServiceStack JsonServiceClient 여기에 마이크로 소프트 에지

그리고이 전체 타이프 스크립트 코드가 브라우저에서 자바 스크립트 버그 브라우저 간 호환성을 가지고 의심스러운 생각

var request = new Authenticate(); 
    request.provider = "credentials"; 
    request.userName = userName; 
    request.password = password; 

    this.client.post(request) 
    .then(res => { 
     if (res.bearerToken != null) { 
     this.tokenService.refreshToken = res.refreshToken; 
     this.tokenService.bearerToken = res.bearerToken; 
     resolve(true); 
     } 
     resolve(false); 
    }, msg => { 
     console.log('login failed', msg); 
     reject(msg); 
    }) 
}); 

:에서 ServiceStack JsonServiceClient를 사용하여 pescript 코드, 오류가오고 있었다 파일 :

import { Injectable } from '@angular/core'; 
import { JsonServiceClient } from 'servicestack-client'; 
import { Authenticate, AuthenticateResponse } from './dtos'; 
import { ApiHelper } from '../../@core/api.helper' 
import { TokenService } from './token.service' 
import { AppModule } from '../../app.module'; 

@Injectable() 
export class AuthService { 
    private baseUrl: string; 
    private client: JsonServiceClient; 
    private tokenService: TokenService; 

    constructor(private apiHelper: ApiHelper) { 
    this.baseUrl = apiHelper.getServiceUrl(apiHelper.ServiceNames.auth); 
    this.client = new JsonServiceClient(this.baseUrl); 
    this.tokenService = AppModule.injector.get(TokenService); 
    } 

    /** 
* @method authenticate 
* @param username 
* @param password 
* @return {Promise<Boolean>} 
*/ 
    authenticate(userName: string, password: string): Promise<Boolean> { 
    let promise = new Promise<Boolean>((resolve, reject) => { 
     var request = new Authenticate(); 
     request.provider = "credentials"; 
     request.userName = userName; 
     request.password = password; 

     this.client.post(request) 
     .then(res => { 
      if (res.bearerToken != null) { 
      this.tokenService.refreshToken = res.refreshToken; 
      this.tokenService.bearerToken = res.bearerToken; 
      resolve(true); 
      } 
      resolve(false); 
     }, msg => { 
      console.log('login failed', msg); 
      reject(msg); 
     }) 
    }); 

    return promise; 
    } 

} 

답변

2

나는이 정확한 오류를 재현 할 수 있지만 나는 그것이 호출 할 때 W3C는 EMPT에의 .json() API를 페치 DOMException을 던졌습니다 MS 가장자리에 문제를 발견했습니다 y this commit에서 해결 된 JSON 응답. 이 수정 프로그램은 v0.0.41servicestack-client (npm)에서 사용할 수 있습니다.

그래도 문제가 해결되지 않으면 작은 독립 실행 형 예를 만들어 실행 해 볼 수 있습니다.

관련 문제