繁体   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