How to include jquery in a vuejs webpack cli project?

11,307

Solution 1

After two days of searching. Its eslintrc.js

add this to the following and it will fix the provide plugin.

env: {
  browser: true,
  jquery: true
},

Solution 2

go into main.js and do

window.$ = window.jQuery = require('jquery')

or

Vue.use({
    install: function(Vue, options){
        Vue.prototype.$jQuery = require('jquery'); // you'll have this.$jQuery anywhere in your vue project
    }
})

Solution 3

Another approach for those who are not using webpack is using expose-loader:

yarn add expose-loader

and the in your main.js

import "expose-loader?$!jquery";
Share:
11,307
Morphasis
Author by

Morphasis

I love coding. Unfortunately i'm not always very good at it. So this is my happy place, the place were the coding community has been so wonderful to be in helping me learn and expand as a coder. So thank you stack overflow i owe it all to you.

Updated on June 14, 2022

Comments

  • Morphasis
    Morphasis almost 2 years

    Hello there i used to vuejs cli to generate a project (https://github.com/vuejs/vue-cli). The cli uses webpack and im having trouble using jquery inside of the vue files. Im always getting a.

    http://eslint.org/docs/rules/no-undef  '$' is not defined
    

    I have tried editing my webpack.dev.config to include the provide plugin block as follows:

    var utils = require('./utils')
    var webpack = require('webpack')
    var config = require('../config')
    var merge = require('webpack-merge')
    var baseWebpackConfig = require('./webpack.base.conf')
    var HtmlWebpackPlugin = require('html-webpack-plugin')
    var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
    
    // add hot-reload related code to entry chunks
    Object.keys(baseWebpackConfig.entry).forEach(function (name) {
      baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
    })
    
    module.exports = merge(baseWebpackConfig, {
      module: {
        rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
      },
      // cheap-module-eval-source-map is faster for development
      devtool: '#cheap-module-eval-source-map',
      plugins: [
        new webpack.DefinePlugin({
          'process.env': config.dev.env
        }),
        // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoEmitOnErrorsPlugin(),
        // https://github.com/ampedandwired/html-webpack-plugin
        new HtmlWebpackPlugin({
          filename: 'index.html',
          template: 'index.html',
          inject: true
        }),
        new FriendlyErrorsPlugin(),
        new webpack.ProvidePlugin({
          $ : "jquery",
          jQuery : "jquery"
        })
      ]
    })
    

    However when trying to use jquery i run into the same issues time and time again. Im not against using a cdn for this i really just cant get this think to include jquery no matter what i try.

    If the vue file is helpful its i try to console.log $ like so inside the script block

    <script>
    export default {
      name: 'how_can_we_help_you',
      data () {
        return {
          msg: 'Welcome to Your Vue.js App'
        }
      }
    }
    console.log($)
    </script>
    

    Please help im very stuck and have been trying to fix this for quite a wile now. Thanks in advance.