programing

nuxt.js 페이지에 외부 javascript 파일 포함

coolbiz 2022. 7. 8. 22:16
반응형

nuxt.js 페이지에 외부 javascript 파일 포함

비교적 간단한 질문이 있습니다.

Nuxt.js의 이 코드펜에서 위젯을 구현하려고 합니다.

RAW HTML을 사용하면 정상적으로 동작하는 코드를 다음에 나타냅니다.

<!DOCTYPE html>
<html>
<head></head>
<body>
  <dev-widget data-username="saurabhdaware"></dev-widget>
  <script src="https://unpkg.com/dev-widget@1.0.3/dist/card.component.mjs" type="module"></script>
</body>

</html>

그러나 이 dev 위젯을 내 nuxt.js 프로젝트에 포함시키려고 하면 내 페이지 중 하나에 작동하지 않습니다.

코드는 다음과 같습니다.

<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/dev-widget@1.0.3/dist/card.component.mjs" type="module"></script>

오류가 계속 발생합니다.

Unknown custom element: < dev-widget >

내가 여기서 뭘 잘못하고 있는지 알아?

글로벌하게 추가

nuxt.config.js 파일로 이동합니다.Nuxt 앱의 모든 페이지에 스크립트 태그를 추가합니다.

export default {
  head: {
    script: [
      {
        src: "https://code.jquery.com/jquery-3.5.1.min.js",
      },
    ],
  }
  // other config goes here
}

를 닫기 전에 스크립트 태그를 추가하는 경우</body>대신<head>태그, 이 태그의 경우,body: true.

script: [
  {
    src: "https://code.jquery.com/jquery-3.5.1.min.js",
    body: true,
  },

이와 같이 스크립트태그에 비동기 크로스 오리진 속성을 추가할 수도 있습니다.

script: [
  {
    src: "https://code.jquery.com/jquery-3.5.1.min.js",
    async: true,
    crossorigin: "anonymous"
  },
],

산출량

<script data-n-head="ssr" src="https://code.jquery.com/jquery-3.5.1.min.js"
crossorigin="anonymous" async=""></script>

특정 페이지에 추가

<script>
  export default {
    head() {
      return {
        script: [
          {
            src: 'https://code.jquery.com/jquery-3.5.1.min.js'
          }
        ],
      }
    }
  }
</script>

참고: 로컬 js 파일을 추가하려면 루트에 배치합니다.static다음과 같이 추가합니다.

  export default {
    head() {
      return {
        script: [
          {
             src: '/js/jquery.min.js'
          }
        ],
      }
    }
  }

@kiyuku1의 답변은 유효합니다만, 여기에서는 js(또는 mjs) 파일을 글로벌하게가 아닌 ONE nuxt.js 페이지에만 포함시키고 싶은 경우의 완전한 솔루션을 소개합니다.

<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/dev-widget@1.0.3/dist/card.component.mjs'
      }
    ]
  },

};
</script>

스크립트를 에 추가해야 합니다.nuxt.config.js. 이게 어떻게 보여야 합니다.

export default {
    mode: 'universal',
    /*
     ** Headers of the page
     */
    head: {
        title: 'Your title',
        meta: [{
                charset: 'utf-8'
            },
            {
                name: 'viewport',
                content: 'width=device-width, initial-scale=1'
            }
        ],

        link: [
            {
                rel: 'stylesheet',
                href: 'css/mystyles.css'
            }
        ],

        script: [
            {
                type: 'module',
                src: 'https://unpkg.com/dev-widget@1.0.3/dist/card.component.js'
            }
        ]
    },
    /*
     ** Customize the progress-bar color
     */
    loading: {
        color: '#fff'
    },
    /*
     ** Global CSS
     */
    css: [],
    /*
     ** Plugins to load before mounting the App
     */
    plugins: [],
    /*
     ** Nuxt.js dev-modules
     */
    buildModules: [],
    /*
     ** Nuxt.js modules
     */
    modules: [],
    /*
     ** Build configuration
     */
    build: {}
}

다음은 답변의 힌트입니다. "Unknown custom element: < dev-widget >"

dev-widget 컴포넌트를 등록합니다.

상세한 것에 대하여는, https://github.com/nuxt/nuxt.js/issues/2877 를 참조해 주세요.

언급URL : https://stackoverflow.com/questions/59015259/include-external-javascript-file-in-a-nuxt-js-page

반응형