Vue.js

Nuxt.jsでuuid(v4)を使う方法

Nuxt.jsでuuid(v4)を使う方法です。npm install uuidからimport { v4 as uuidv4 }、uuidv4()での生成、標準のcrypto.randomUUID()との使い分け、動かないときの確認点までまとめました。

この記事の目次
  1. Nuxt.jsでuuid(v4)を使う方法
  2. node_modulesでuuidを確認
  3. v4をインポートする
  4. scriptタグで使う
  5. うまく動かないとき

Nuxt.jsでuuid(v4)を使う方法です。

手順は3つだけです。npm install uuidでパッケージを入れ、import { v4 as uuidv4 } from 'uuid'で読み込み、uuidv4()を呼ぶと"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"のような文字列が返ります。Nuxt.jsに限らず、Vue.jsや素のJavaScriptでも同じ書き方です。

パッケージを増やしたくない場合は、ブラウザとNode.js(v19以降)に標準で用意されているcrypto.randomUUID()でもv4形式のUUIDを生成できます。ブラウザではHTTPSかlocalhostでしか使えない点だけ注意してください。

Nuxt.jsでuuid(v4)を使う方法

node_modulesでuuidを確認

uuidが含まれていれば、下のインポートから始めます。

node_modulesに含まれていない場合、


npm install uuid

https://www.npmjs.com/package/uuid

Nuxt.jsでは他の依存パッケージ経由でnode_modulesに入っていることがあります。ただし自分のコードからimportするなら、package.jsonに明示するためにもインストールしておくのが確実です。

v4をインポートする

import { v4 as uuidv4 } from 'uuid'

scriptタグで使う

以下はOptions API(Nuxt 2)の例です。Nuxt 3の<script setup>でも、importとuuidv4()の呼び出しは同じです。

まずはdata()で初期値を設定します。

  data() {
    return {
      board: {
          uuid: '',
        }
      },
    }
  },

uuidv4を生成するには、次のようにします。

uuidv4()

firebaseなどでdocumentのidとして利用できます。作成日をあわせて保存する場合の表示整形は、Nuxt.jsで日付をフォーマットする方法を参考にしてください。

  methods: {
    addBoard() {
      // uuidを作成
      this.currentImageId = uuidv4()
      this.dialog = true
    },
    createBoard() {
      let that = this
      if (this.$refs.form.validate()) {
        // 作成日を作成
        this.board.dateCreated = Date.now()
        this.$fire.firestore
        .collection('users')
        .doc(this.$fire.auth.currentUser.uid)
        .collection('boards')
        .doc(this.currentImageId)
        .set(this.board)
        .then(function (docRef) {
          that.dialog = false
          that.$refs.form.reset()
          that.snackbarText = 'ボードが作成されました'
          that.snackbar = true
        })
        .catch(function (error) {})
      }
    },
...

うまく動かないとき

Cannot find module 'uuid'と出る場合は、インストール先のプロジェクトが違うか、devサーバーを再起動していないことがほとんどです。package.jsonのdependenciesにuuidがあるか確認し、npm installのあとにサーバーを起動し直してください。

importしたのにuuidv4 is not a functionになる場合は、古い書き方のimport uuidv4 from 'uuid/v4'が残っていないか確認します。現在のuuidパッケージはこのパスを提供していないため、上で紹介したimport { v4 as uuidv4 } from 'uuid'に直します。

assets配下のCSSを全ページに適用する設定はNuxt.jsでassetsのcssをグローバルに適用する方法で扱っています。

スポンサーリンク