модуль catch error `должен начинаться либо с" / "," ./ ", либо с" ../ "` - PullRequest
0 голосов
/ 25 февраля 2020

Пример

<!-- index.html -->
<script type="module">
    import 'someModule'
</script>

TypeError: Ошибка при определении спецификатора модуля: someModule


Uncaught TypeError: Не удалось разрешить спецификатор модуля "someModule". Относительные ссылки должны начинаться с "/", "./" или "../".


Q:

  1. Возможно ли перехватить эту ошибку ?
  2. Кто отправляет эту ошибку?

Context

В этом случае зависимость может быть пойман и решен с помощью сервисного работника.

<script type="module">
    import '/someModule'
</script>

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Вы не можете перехватить эту ошибку , если вы не используете какой-то нестандартный обработчик необработанных исключений, например window.onerror в браузере или process.setUncaughtExceptionHandler в Node.js.

Перехват этой ошибки невозможно, потому что операторы import разрешены только вне каких-либо блоков в глобальной области модуля. Поэтому, если вы попытаетесь обернуть import в try..catch, он выдаст ошибку SyntaxError.

Вместо этого вы можете использовать предложение синтаксиса Dynami c import(), которое можно вызывать где угодно ; и обработать его обещание отклонения.

0 голосов
/ 25 февраля 2020

Вы неправильно импортируете его в соответствии с журналом ошибок.

Допустимые спецификаторы модуля должны соответствовать одному из следующих: Полный не относительный URL. Как и в случае, он не выдает ошибку при вводе через новый URL (moduleSpecifier).

Starts with /.
Starts with ./.
Starts with ../.

Другие спецификаторы зарезервированы для будущего использования, такие как импорт встроенных модулей.

Просто попробуйте этот код:

<script type="module">
    import {someModule} from './someModule.js';
</script>
...