簡體   English   中英

TS 編譯器/create-react-app 從函數中刪除異步

[英]TS compiler/create-react-app removes async from function

我有一個使用 create-react-app 創建的新反應應用程序,但出現編譯錯誤:

Module parse failed: Cannot use keyword 'await' outside an async function (2:562)

問題是, await 位於異步函數內,如下所示:

export async function request<T>(
  path: string,
  params: RequestInit = {},
  responseHandler: (resp: Response) => Promise<ParsedResponse<T>> = getParsedResponse
): Promise<ParsedResponse<T>> {
  const resp = await fetch(path, {
    ...{
      headers: {
        Accept: "application/json"
      },
      credentials: "same-origin"
    },
    ...params
  });

  return await responseHandler(resp);
}

編譯代碼的輸出如下所示:

return _context.abrupt("return",function(){var resp=await fetch(path,_objectSpread({},{headers:{Accept:"application/json"},credentials:"same-origin"},{},params));return await responseHandler(resp);}());case 3:case"end":return _context.stop();}}},_callee);}));

似乎編譯器刪除了函數的異步部分,所以我們得到了編譯器錯誤。

我不確定是否有辦法解決這個問題,但其他項目使用相同的代碼並且沒有問題,所以我認為這是一個配置問題。 但是,我一直無法找到解決方案。

感謝您的任何幫助,您可以提供。

所以,我重新排列了文件中的方法,編譯成功了。 我認為這與以下 babel 問題有關:

https://github.com/babel/babel/issues/10306

不過我可能是錯的。 無論如何,這不是配置錯誤或其他任何東西,只是一個怪癖。

暫無
暫無

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

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