Webpack: wyrażanie zależności modułu
Próbuję require
modułu bootstrap-webpack w mojej aplikacji webpacked.
Wydaje się, że potrzebuje jQuery, ponieważ dołączony javascript rzuca następujące:
Uncaught ReferenceError: jQuery is not defined
Jak określić w webpacku, że jQuery jest zależnością dla modułu bootstrap-webpack, aby rozwiązać ten problem? Wydaje mi się, że to powinno być banalne, ale staram się to rozgryźć.
Próbowałem dodać:
"jquery": "latest"
Do dependecies w bootstrap-webpack ' s package.json
, ale to nie zadziałało. Dokumentacja jest niekompletna i niewiele mogę znaleźć na ten temat. To powinno być trywialne, prawda? Pomocy!
2 answers
Istnieją dwa możliwe rozwiązania:
Użyj ProvidePlugin: skanuje kod źródłowy pod kątem podanego identyfikatora i zastępuje go odniesieniem do danego modułu, tak jak było to wymagane.
// webpack.config.js
module.exports = {
...
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
]
};
Użyj imports-loader: daje możliwość przygotowania preparatów typu require()
.
// webpack.config.js
{
...
module: {
loaders: [
{ test: require.resolve("jquery"), loader: "imports?jQuery=jquery" }
]
}
}
W takim przypadku musisz uruchomić npm install imports-loader --save
przed.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-05 19:59:38
Poprzez ten problem z githubem .
Zainstaluj expose-loader
i dodaj require('expose?$!expose?jQuery!jquery');
do głównego punktu wejścia tuż przed wymaganiem webpack-bootstrap.
To ustawi jQuery w oknie, aby każdy plik mógł się do niego dostać. Bądź ostrożny z tą metodą wszystkie pliki będą miały dostęp do tej wersji jQuery niezależnie od tego, czy było to jawnie wymagane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-21 04:29:20