Необязательный динамический импорт, которым Webpack и Vite довольны?Javascript

Форум по Javascript
Ответить
Anonymous
 Необязательный динамический импорт, которым Webpack и Vite довольны?

Сообщение Anonymous »

У меня есть библиотека , которая имеет дополнительную зависимость и обрабатывает ее с использованием динамического импорта в блоке Try Catch, например,

Код: Выделить всё

let someModule = null;
try {
someModule = await import ("may-not-exist"); // Webpack and Vite erroring
} catch (e) {
// pass
}

// ... check if someModule is null
< /code>
Webpack и Vite (и, возможно, другие?) Оба пытаются статически проанализировать импорт, и поэтому, когда он используется в проекте, который опирается на Webpack или VITE, они не могут создать, если модуль не найдено. class = "lang-js prettyprint-override">someModule = await import (/* webpackIgnore: true */"may-not-exist"); // Webpack happy, not Vite
< /code>
Это работает для Webpack, но не Vite. Я не мог найти подобный обходной путь для VITE. Единственное решение, которое я обнаружил, состояло в том, чтобы заставить имя модуля быть динамичным, например: < /p>
const tryImport = async (path) => {
try {
return await import(path); // Vite happy, not Webpack
} catch (e__ignored) {
// module doesn't exist
return null;
}
};
const someModule = await tryImport("may-not-exist");
Теперь Vite не показывает никаких ошибок или предупреждений, но, хотя WebPack не бросает Fatal ошибки, он показывает очень постоянные предупреждения:

Код: Выделить всё

Critical dependency: the request of a dependency is an expression
Кажется, что Webpack требует динамического импорта для использования статически известных путей, а не даже/ * webcpackignore: true */ замолчать (я попытался добавить его в обоих Import и внутри TryImport перед пути).

Вопрос:
Как я могу реализовать дополнительные зависимости в библиотеке, которая работает в различных средах, включая Webpack и Veite? Я, очевидно, не хочу, чтобы пользователи изменяли свою конфигурацию, чтобы подавить или игнорировать подобные предупреждения.

Подробнее здесь: https://stackoverflow.com/questions/794 ... happy-with
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»