I Have webpack.min.js:
mix.webpackConfig(webpack => {
return {
plugins: [
new webpack.ProvidePlugin({
$: \'jquery\
I had this issue in Laravel 5.7 when I tried using some of the default views that it provided. I was trying to use JavaScript (which required using jQuery) in some blade view templates that extended the default layout/app.blade.php template.
But for me the problem was not the window.$ not being assigned the window.jQuery library, because it was being added as far as the resources/js/bootstrap.js file was concerned. (This is a file that appears to be precompiled into public/js/app.js by Laravel Mix. You can see this is the case by looking into webpack.mix.js, within it, you'll find this statement:
mix.js('resources/js/app.js', 'public/js')
where
resources/js/app.js requires resources/js/bootstrap.js .
If you wish to manually compile this for yourself first run:
npm install then npm run dev when in development mode, or npm run prod when in production mode.
It turned out that the issue was here:
resources/views/layouts/app.blade.php
There was an instance of script tag with a defer attribute like so:
That defer attribute was causing all the problems.
So I removed it like so:
and the problem of jQuery not being defined was solved.
I prefer to defer my JavaScript loading by simply moving the script tags closer to the end of body HTML tag anyways.