Я конвертирую процесс сборки grunt + requireJS в webpack. У нас есть что-то вроде этого:
require.config({
shim:{
'popover': {
deps: ['tooltip']
},
'tooltip': {
deps: ['jquery']
}
}
})
Где мы конкретно говорим, что всплывающая подсказка зависит от jquery, поэтому сначала загрузите jquery. Всплывающее окно зависит от всплывающей подсказки, поэтому загрузите всплывающую подсказку заранее.
Как мне перевести эту конфигурацию в webpack 4? Я поискал в Интернете, пытаясь увидеть, есть ли что-нибудь достаточно похожее. Шимминг Webpack не делает зависимостей между библиотеками. В документации тоже ничего не вижу ... что меня очень удивило.
Я нашел статьи (https://gist.github.com/xjamundx/b1c800e9282e16a6a18e) которые предлагают использовать import-loader для достижения такого эффекта. Итак, моя конфигурация такая:
module:{
strictExportPresence:true,
rules:[
{ parser: { requireEnsure: false } },
{ oneOf:[...bunch of stuffs for different file types] },
{ test : /tooltip/, loader: 'imports-loader?$=jquery' },
{ test : /popover/, loader: 'imports-loader?tooltip' }
]
также установите соответствующие псевдонимы в конфигурации.
ошибка, которую я получаю, браузер - это конструктор undefined в строке "Popover.prototype = $ .extend ({}, $ .fn.tooltip.Constructor.prototype ..." поэтому библиотека всплывающих подсказок не загружается до загрузки всплывающего окна. Я также не вижу нового кода, добавленного webpack, что, я думаю, может быть моей первой проблемой, так как import-loader предположительно добавляет указанную библиотеку в модуль popover, верно?
Я точно вижу, что не так с моим подходом, и исчерпал много ресурсов в Интернете. Я уверен, что кому-то приходилось сталкиваться с подобными проблемами раньше, пожалуйста, приглушите меня. Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны указать tooltip и popover в разделе resolve.alias:
resolve: {
alias: {
"jquery": "lib/jquery-x.x.x",
"tooltip": "lib/tooltip-x.x.x",
"popover": "lib/popover-x.x.x"
}
}
В противном случае webpack не сможет разрешить модули для прокладки imports-loader. Также обратите внимание, что вы неправильно написали imports-loader в своей конфигурации.
Не могли бы вы изменить значение загрузчика правил всплывающей подсказки на exports-loader?tooltip!imports-loader?$=jquery и сообщить мне, помогло ли это. Другое предложение - использовать expose-loader и выполнить 'expose-loader? Tooltip! Imports-loader? This => window' (подробности см. В npmjs.com/package/expose-loader)
Привет, приятель, спасибо за отзывы. Я решил свою проблему ... Думаю. первая проблема заключалась в том, что в тесте не должно было быть одной кавычки: '/ popover /'. Во-вторых, сокращенное обозначение загрузчиков устарело в webpack 4 ... поэтому я изменил использование: [loader: LOADER, options: OPTIONS]. В-третьих, я использую expose-loader вместо export-loader. Спасибо за предложения!
Спасибо, я исправил ваши предложения, но это все еще не удается :(. Сообщение обновлено.