Компилятор TS / create-реагировать-приложение удаляет asyn c из функции - PullRequest
1 голос
/ 28 марта 2020

У меня есть новое приложение реагирования, созданное с помощью create-реагировать-приложение, и я получаю ошибку компиляции:

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

Проблема в том, что ожидание находится внутри асинхронной c функции, как видно здесь:

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

Кажется, что компилятор удаляет асин * c часть функции, и поэтому мы получаем ошибка компилятора.

Я не уверен, есть ли способ обойти это, но другие проекты используют тот же код и не имеют проблем, поэтому я предполагаю, что это проблема конфигурации. Однако я не смог найти решение.

Спасибо за любую помощь, которую вы можете предоставить.

1 Ответ

0 голосов
/ 30 марта 2020

Итак, я переставил методы в файле, и компиляция работала. Я думаю, что это связано со следующей проблемой Babel:

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

Хотя я могу ошибаться. В любом случае, это не было ошибкой конфигурации или чем-то еще, просто причудой.

...