Я пытаюсь запросить модуль в файле, который будет использоваться только в том случае, если этот модуль действительно доступен. Таким образом, модуль является полностью необязательным. Этот код будет распространяться как часть сторонней библиотеки. Проблема в том, что любой пользователь, использующий веб-пакет, увидит, что его сборка не удастся, если я использую import
, поэтому я в итоге использовал:
let webrtc = {};
try {
webrtc = require('my-optional-module');
} catch (err) {}
Но даже с этим кодом они получат предупреждение о проектах, которые не нуждаются в этом дополнительном модуле:
[WEB] WARNING in ./node_modules/xxx
[WEB] Module not found: Error: Can't resolve 'my-optional-module' in '/Users/xxx/node_modules/xxx'
Редактировать: Используя ответ ниже
let webrtc = {};
if(require.resolve('my-optional-module')) {
webrtc = require('my-optional-module');
}
Но я получаю это предупреждение:
Critical dependency: the request of a dependency is an expression
И эта ошибка:
Module not found: Error: Can't resolve 'my-optional-module' in xxx
Edit2:
На основе инструкции веб-пакета для выполнения динамического импорта я также попытался:
var webrtc = {};
require.ensure(['my-optional-module'], function (require) {
return webrtc = require('my-optional-module');
});
Но я все еще получаю:
Module not found: Error: Can't resolve 'my-optional-module' in xxx