簡體   English   中英

Angular 6和AWS-放大通用網絡錯誤

[英]Angular 6 and aws-amplify generic network error

我有一個正在使用的angular 6和aws-amplify / aws-amplify-angular應用程序,當前正在嘗試執行HTTP GET。 我收到一個通用Error: Network Error我已閱讀的Error: Network Error消息實際上可能是從身份驗證到與亞馬遜的通信問題的任何內容。

我的函數看起來像這樣,我試圖將lambda的響應簡單地登錄到控制台。

async getOwnerDecks() {
    const authToken = await Auth.currentSession().then(data => {
        return data.idToken.jwtToken;
    });

    const authHeader = {
        Authorization: authToken
    };

    this.result = await this.amplifyService.api().get('decks', '', {headers: authHeader}).then( resp => {
        return resp;
        }).catch(err => {
            console.log(err);
    });
}

就是這樣。 我可以通過郵遞員通過awsmobile的此命令進行調用awsmobile cloud-api invoke decks get /decks並獲得成功的響應,但是從上面的函數中我什么也沒得到。 我嘗試使用API​​.get和angularService.api()。get都失敗了。

Error
columnNumber: 15
​
config: Object { timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", … }
​
fileName: "http://localhost:8080/vendor.js"
​
lineNumber: 96651
​
message: "Network Error"
​
request: XMLHttpRequest { __zone_symbol__xhrSync: false, __zone_symbol__xhrURL: "https://xxxxxx.execute-api.eu-west-1.amazonaws.com/MobileHub_Deployments/decks", __zone_symbol__ON_PROPERTYreadystatechange: handleLoad(), … }
​
response: undefined
​
stack: "createError@http://localhost:8080/vendor.js:96651:15\nhandleError@http://localhost:8080/vendor.js:96194:14\nwrapFn@http://localhost:8080/polyfills.js:3510:30\n./node_modules/zone.js/dist/zone.js/</ZoneDelegate.prototype.invokeTask@http://localhost:8080/polyfills.js:2743:17\nonInvokeTask@http://localhost:8080/vendor.js:40796:24\n./node_modules/zone.js/dist/zone.js/</ZoneDelegate.prototype.invokeTask@http://localhost:8080/polyfills.js:2742:17\n./node_modules/zone.js/dist/zone.js/</Zone.prototype.runTask@http://localhost:8080/polyfills.js:2510:28\n./node_modules/zone.js/dist/zone.js/</ZoneTask.invokeTask@http://localhost:8080/polyfills.js:2818:24\ninvokeTask@http://localhost:8080/polyfills.js:3862:9\nglobalZoneAwareCallback@http://localhost:8080     /polyfills

這是我應該得到的回應

{ 
  requestBody: null,
  pathParams: '/decks',
  queryStringParams: null,
  headerParams:
   { Accept: 'application/json, text/plain, */*',
     'CloudFront-Forwarded-Proto': 'https',
     'CloudFront-Is-Desktop-Viewer': 'true',
     'CloudFront-Is-Mobile-Viewer': 'false',
     'CloudFront-Is-SmartTV-Viewer': 'false',
     'CloudFront-Is-Tablet-Viewer': 'false',
     'CloudFront-Viewer-Country': 'ES',
     Host: 'xxxxxxxxxxxxx.execute-api.eu-west-1.amazonaws.com',
     'User-Agent': 'axios/0.17.1',
     Via: '1.1 xxxxxxxxxxxxxxx.cloudfront.net (CloudFront)',
     'X-Amz-Cf-Id': 'iNPucPQXZybc7Zg1AfA005rE-W30Qs-TG1V2pDK5fDHAPWSNSBg==',
     'x-amz-date': '20180620T143059Z',
     'X-Amzn-Trace-Id': 'Root=1-5b2a6523-3c88e3d2f77853e8cbf4351c',
     'X-Forwarded-For': 'xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx',
     'X-Forwarded-Port': '443',
     'X-Forwarded-Proto': 'https' },
  stage: 'Development',
  stageVariables: { stage: 'Development' },
  cognitoIdentityId: null,
  httpMethod: 'GET',
  sourceIp: 'xxx.xxx.xxx.xxx',
  userAgent: 'axios/0.17.1',
  requestId: '8cec8ff3-7496-11e8-a737-9d1996926e66',
  resourcePath: '/decks' 
}

我正在使用最新的版本6 angular / cli,aws-amplify和aws-amplify-angular npm軟件包。

我已經驗證了它與cors不相關,因為以前我遇到過cors標頭問題,現在,一旦將所需的標頭添加到awsmobile lambda中,該錯誤就消失了。

有什么明顯的我想念的嗎?

您有以下代碼:

this.result = await this.amplifyService.api().get('decks', '', {headers: authHeader}).then( resp => {
    return resp;
    }).catch(err => {
        console.log(err);
});

看起來您在.get參數中傳遞了空路徑。 你應該有這樣的東西嗎?

this.result = await this.amplifyService.api().get('decks', '/decks', {headers: authHeader}).then( resp => {
    return resp;
    }).catch(err => {
        console.log(err);
});

...在哪個/ decks路徑而不是空字符串中傳遞?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM