【问题标题】:TS compiler/create-react-app removes async from functionTS 编译器/create-react-app 从函数中移除异步
【发布时间】:2020-07-09 07:10:48
【问题描述】:

我使用 create-react-app 创建了一个新的 react 应用,但出现编译错误:

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);}));

编译器似乎删除了函数的异步部分,因此我们得到编译器错误。

我不确定是否有办法解决这个问题,但其他项目使用相同的代码并且没有问题,所以我认为这是配置问题。但是我一直无法找到解决方案。

感谢您提供的任何帮助。

【问题讨论】:

  • 我相信您发布的代码顶部缺少一些行。
  • 你是对的。已修复,谢谢。
  • 当我将您的代码粘贴到create-react-app 生成的项目中时,它会为我编译。没有Module parse failed。所以,我同意,这是一个配置问题。你能分享更多你的配置吗?

标签: javascript reactjs typescript webpack babeljs


【解决方案1】:

所以,我重新排列了文件中的方法,编译成功了。我认为它与以下 babel 问题有关:

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

不过我可能是错的。无论如何,这不是配置错误或其他什么,只是一个怪癖。

【讨论】:

    猜你喜欢
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2021-12-15
    相关资源
    最近更新 更多