7

Hi i recently started working on Rails 6 with ruby 2.6.5. as the rails 6 has introduced the webpacks so i am trying to load my js files with the webpack. Although i have already required the jquery in the appliation.js still i am getting the below error:

'Uncaught ReferenceError: $ is not defined'

application.js

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require('packs/jquery')

My 'jquery.js' file is inside the packs directory. Please let me know if i am missing something. Thanks in advance :)

awsm sid
  • 595
  • 11
  • 28
  • Is `jQuery` defined? `$` is an alias for `jQuery` object so long as `noConflict()` hasn't been used – charlietfl Nov 03 '19 at 03:49
  • 1
    i found a way window.$ = window.jQuery = require('packs/jquery') this is working but now i have another similar problem i am using masonry.pkgd.min.js now i am getting masonry is not defined. do you have any clue how to define it? – awsm sid Nov 03 '19 at 04:32
  • You should check it at https://stackoverflow.com/a/58161486/4631412 – ThienSuBS Feb 28 '20 at 07:55

1 Answers1

17
const { environment } = require('@rails/webpacker')

const webpack = require('webpack')
environment.plugins.prepend('Provide', new webpack.ProvidePlugin({
  $: 'jquery/src/jquery',
  jQuery: 'jquery/src/jquery',
  jquery: 'jquery',
  'window.jQuery': 'jquery',
  Popper: ['popper.js', 'default']
}))

module.exports = environment

In config/webpack/environment.js and delete require('packs/jquery') in application.js

CR7
  • 1,056
  • 1
  • 8
  • 18