Search code examples
nuxt.jsbaqend

How do i add client side js libraries in Nuxt>


First time on nuxt. i am trying to add a client side library.

In a normal html i will just add it to my index.html file. But i have no idea how do i do the same on nuxt.

How do i add it?

this is my config

module.exports = {

  /*
  ** Headers of the page
  */
  head: {
    title: 'digglu',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: 'social media site' },
      { name: 'google-signin-client_id', content:'xxx.apps.googleusercontent.com' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
    ]
  },
  /*
  ** Customize the progress-bar color
  */
  loading: { color: '#3B8070' },
  /*
  ** Build configuration
  */
  build: {
    /*
    ** Run ESLINT on save
    */
    extend (config, ctx) {
      if (ctx.dev && ctx.isClient) {
        config.module.rules.push({
          enforce: 'pre',
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          exclude: /(node_modules)/
        })
      }
    }
  }
}

Solution

  • According to NuxtJS documentation: https://nuxtjs.org/guide/plugins

    I can confirm this works, but some plugins still throw error on the first 3 refreshes of the page, then the error is gone, I don't know the reason.

    Client-side only

    Some plugins might work only for the browser, you can use the ssr: false option in plugins to run the file only on the client-side.

    Example:

    nuxt.config.js:

    module.exports = {
      plugins: [
        { src: '~/plugins/vue-notifications', ssr: false }
      ]
    }
    

    plugins/vue-notifications.js:

    import Vue from 'vue'
    import VueNotifications from 'vue-notifications'
    
    Vue.use(VueNotifications)
    

    In case you need to require some libraries only for the server, you can use the process.server variable set to true when webpack is creating the server.bundle.js file.