npm install jsqr --save
// utils/qrcode.jsimport jsQR from "jsqr"export const scanQrCode = (file, callback) => {  const image = new Image()  image.src = file.content  image.addEventListener("load", (e) => {    console.log(      "image on load, image.naturalWidth, image.naturalHeight",      image.naturalWidth,      image.naturalHeight    )    const canvas = document.createElement("canvas") // Creates a canvas object    canvas.width = image.naturalWidth // Assigns image's width to canvas    canvas.height = image.naturalHeight // Assigns image's height to canvas    const context = canvas.getContext("2d") // Creates a contect object    context.imageSmoothingEnabled = false    context.drawImage(image, 0, 0, image.naturalWidth, image.naturalHeight) // Draws the image on canvas    const imageData = context.getImageData(0, 0, image.naturalWidth, image.naturalHeight) // Assigns image base64 string in jpeg format to a variable    const code = jsQR(imageData.data, image.naturalWidth, image.naturalHeight)    if (code) {      console.log("Found QR code", code)      callback(code)    }  })}
// components/TestUploader.vue<template>      <van-uploader :after-read="afterRead"/></template><script setup>import { scanQrCode } from "../utils/qrcode";const afterRead = (file) => {  scanQrCode(file, (code) => {    console.log(code);  });};</script>