Webpack: выражение зависимости модуля
Я пытаюсь require
bootstrap-webpack в моем веб-пакете.
Кажется, что нужно jQuery, так как связанный javascript затем бросает следующее:
Неподготовлено ReferenceError: jQuery не определен
Как мне определить, что jQuery является зависимостью для модуля bootstrap-webpack, чтобы исправить эту проблему? Похоже, это должно быть тривиально, но я изо всех сил пытаюсь понять это.
Я пробовал добавить:
"jquery": "latest"
для зависимостей в bootstrap-webpack package.json
, но это не сработало. Документация является неполной, и я не могу найти многого в этой проблеме. Это должно быть тривиально, не так ли? Помогите!
Ответы
Ответ 1
Существует два возможных решения:
Использовать ProvidePlugin. Он сканирует исходный код для данного идентификатора и заменяет его ссылкой на данный модуль, как и требовалось.
// webpack.config.js
module.exports = {
...
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
]
};
Используйте imports-loader: он предоставляет возможность добавлять препараты, такие как require()
.
// webpack.config.js
{
...
module: {
loaders: [
{ test: require.resolve("jquery"), loader: "imports?jQuery=jquery" }
]
}
}
В этом случае вам нужно запустить npm install imports-loader --save
раньше.
Ответ 2
Через эту проблему github.
Установите expose-loader
и добавьте require('expose?$!expose?jQuery!jquery');
в основную точку входа непосредственно перед тем, как вам понадобится webpack-bootstrap.
Это установит jQuery в окне, чтобы любой файл мог его получить. Будьте осторожны с этим методом, все файлы будут иметь доступ к этой версии jQuery, независимо от того, требуется ли это явно.