【发布时间】: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