I have a relatively simple question.
I am trying to implement the widget from this codepen in Nuxt.js.
Here's my code, which works fine if I use RAW HTML:
<!DOCTYPE html>
<html>
<head></head>
<body>
  <dev-widget data-username="saurabhdaware"></dev-widget>
  <script src="https://unpkg.com/[email protected]/dist/card.component.mjs" type="module"></script>
</body>
</html>
But when I try to include this dev widget in my nuxt.js project, in one of my pages, it does not work.
Here is my code:
<template>
  <div class="container">
    <div>
        <dev-widget data-username="saurabhdaware"></dev-widget>
    </div>
  </div>
</template>
<script>
export default {
  layout: "default",
};
</script>
<script src="https://unpkg.com/[email protected]/dist/card.component.mjs" type="module"></script>
I keep getting an error:
Unknown custom element: < dev-widget >
Any idea what I am doing wrong here?
Adding as globally
Navigate to the nuxt.config.js file. It adds the script tag to all pages in your Nuxt app.
export default {
  head: {
    script: [
      {
        src: "https://code.jquery.com/jquery-3.5.1.min.js",
      },
    ],
  }
  // other config goes here
}
If you want to add a script tag before closing the </body> instead of <head> tag, you can do it by adding a body: true.
script: [
  {
    src: "https://code.jquery.com/jquery-3.5.1.min.js",
    body: true,
  },
You can also add async, cross-origin attributes to a script tag like this.
script: [
  {
    src: "https://code.jquery.com/jquery-3.5.1.min.js",
    async: true,
    crossorigin: "anonymous"
  },
],
OUTPUT
<script data-n-head="ssr" src="https://code.jquery.com/jquery-3.5.1.min.js"
crossorigin="anonymous" async=""></script>
Adding to particular page
<script>
  export default {
    head() {
      return {
        script: [
          {
            src: 'https://code.jquery.com/jquery-3.5.1.min.js'
          }
        ],
      }
    }
  }
</script>
Note:
If you want to add a local js file, place it in a root static folder and add it as follows.
  export default {
    head() {
      return {
        script: [
          {
             src: '/js/jquery.min.js'
          }
        ],
      }
    }
  }
                        @kiyuku1 's answer would work, but here's the complete solution that would work if we want to include a js (or mjs) file in ONE nuxt.js page only, instead of globally:
<template>
  <div class="container">
    <div>
        <dev-widget data-username="saurabhdaware"></dev-widget>
    </div>
  </div>
</template>
<script>
export default {
  layout: "default",
  head: {
    script: [
      {
        type: 'module',
        src: 'https://unpkg.com/[email protected]/dist/card.component.mjs'
      }
    ]
  },
};
</script>
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With