pluginsnuxt.jsagora.ioagora-web-sdk-ng

Agora sdk plugin not recognized in Nuxt 2


I'm trying to setup Agora for live streaming in my nuxtjs app. But it gives an error saying plugin not recognized in the console and I can't seem to get past this issue. Did anyone encounter similar issues? My nuxt version is "nuxt": "^2.15.8" and agora "agora-rtc-sdk-ng": "^4.13.0". The error I'm encountering now is: plugin is undefined error

I've imported the plugin in agora.js file in my plugins folder.

import Vue from "vue";
import { AgoraRTC } from 'agora-rtc-sdk-ng';

Vue.use(AgoraRTC);

And the nuxt config.

{
  src: "~/plugins/agora.js",
  ssr: false,
  mode: 'client'
}
EDIT:

If I update the agora.js file with this code:

import Vue from "vue";
import AgoraRTC from 'agora-rtc-sdk-ng';

Vue.use(AgoraRTC);

I get the error: ReferenceError: AgoraRTC is not defined.

Am I missing something? Also it would be a great help if anyone could give reference to a demo build with nuxt.


Solution

  • After finding no solution to this, I contacted the support team of Agora. They had been a great help!

    The problem was with Vue.use(AgoraRTC). For some reason this wasn't working. So I had to inject it in the app.

    First I replaced these sections form plugins/agora.js file:

    import Vue from "vue";
    import AgoraRTC from 'agora-rtc-sdk-ng';
    
    Vue.use(AgoraRTC);
    

    and nuxt.config.js file:

    {
      src: "~/plugins/agora.js",
      ssr: false,
      mode: 'client'
    }
    

    With this:

    import AgoraRTC from "agora-rtc-sdk-ng"
    
    export default ({app}, inject) => {
        inject("AgoraRTC", AgoraRTC)
    }
    

    and:

    {
      src: "~/plugins/agora.js",
      mode: 'client'
    }
    

    Finally the AgoraRTC variable is accessible in the components as this.$AgoraRTC.

    Reference to inject in $root from Nuxt docs

    Thanks to the support team of Agora