Minify js с asyn c in ASP. NET Core 2.2 - PullRequest
1 голос
/ 10 февраля 2020

Я занимаюсь разработкой приложения ASP. NET Core 2.2 и использую Bundler & Minifier для минимизации кода js. Когда я пытаюсь добавить .js файл с асинхронной операцией \ await:

updatePermissionsConnection.onclose(
    async () => {
         await startUpdatePermissionsConnection();
    });

, я получаю много ошибок:

Ошибка 0 Ожидается ')': =>
Ошибка 0 Ожидается ';'
Ошибка 0 Ожидаемое выражение:)
Ошибка 0 Ожидается ')': =>
Ошибка 0 Ожидается ';'
Ошибка 0 Ожидаемое выражение:)

Как это исправить?

1 Ответ

1 голос
/ 11 февраля 2020
  1. Это известная проблема. Хотя этот commit показывает, что BuildBundlerMinifier должен решить эту проблему, он еще не поддерживает async/await. См. # 311 и # 379 .

  2. На самом деле BuildBundlerMinifier анализирует JavaScript с использованием C# (см. NUglify / JavaScript). Тем не менее, JavaScript само развивается очень быстро (см. tc39 / предложения ). Вот почему сторонняя библиотека. NET не может своевременно поддерживать новую функцию JavaScript. В результате в настоящее время люди, как правило, переносят свой набор инструментов на платформу Node.js для поддержки новейшей функции JavaScript.

  3. Обычно, даже если BuildBundlerMinifier не поддерживает последние JavaScript особенность, это не будет проблемой. Потому что некоторые браузеры тоже не поддерживают новейшие функции. Например, люди не будут использовать async/await непосредственно в браузере, потому что он будет работать на IE11 (см. MDN ). Таким образом, быстрое и грязное решение - использовать старый Promise API вместо использования async/await в Браузере напрямую.

  4. Гораздо более надежный способ - использовать платформу Node.js , Например, Babel / Gulp / .... Microsoft предоставила образец , который потребляет bundleconfig.json с использованием Gulp. Было бы легко перенести цепочку инструментов.

...