v2.5.2
Giriş yap

React Js İle Barkod Okutma Programında Aşağıdaki Hatayı Alıyorum Yardımcı Olabilir misiniz?

medenibarlas
447 defa görüntülendi ve 1 kişi tarafından değerlendirildi

TypeError: window.BarcodeDetector is not a constructor

Kodlar Bu Şekilde

import { useRef,useEffect, useState } from "react";

function App() {

const video = useRef(null);
const canvas = useRef(null);
const [barcode, setBarcode] = useState(null);

const openCam = () =>{

navigator.mediaDevices.getUserMedia({ video:{ width:1280,height:720 } })
.then(stream => {
  video.current.srcObject = stream;
  video.current.play();

  const ctx = canvas.current.getContext('2d');
  => Burda Hata Alıyorum const barcode =  new window.BarcodeDetector({formats: ['qr_code', 'ean_13']});
gokcin
296 gün önce

Hatanın kaynağı, tarayıcınızın BarcodeDetector API'sini desteklememesi olabilir. Bu durumda, bir polyfill kullanmanız gerekebilir.

import { useRef, useEffect, useState } from "react";

function App() {
  const video = useRef(null);
  const canvas = useRef(null);
  const [barcode, setBarcode] = useState(null);

  const openCam = () => {
    navigator.mediaDevices.getUserMedia({ video: { width: 1280, height: 720 } })
      .then(stream => {
        video.current.srcObject = stream;
        video.current.play();

        const ctx = canvas.current.getContext('2d');

        // BarcodeDetector API'nin tarayıcıda desteklenip desteklenmediğini kontrol et
        if ('BarcodeDetector' in window) {
          const barcodeDetector = new window.BarcodeDetector({ formats: ['qr_code', 'ean_13'] });

          // Daha fazla işlem yapabilir veya tanıma başarılı olduğunda setBarcode ile state'i güncelleyebilirsiniz
          barcodeDetector.detect(video.current)
            .then(barcodes => {
              console.log('Barcodes detected:', barcodes);
              // setBarcode(barcodes);
            })
            .catch(error => {
              console.error('Barcode detection error:', error);
            });
        } else {
          console.error('Tarayıcınız BarcodeDetector API\'yi desteklemiyor.');
        }
      })
      .catch(error => {
        console.error('Kamera açma hatası:', error);
      });
  };

  useEffect(() => {
    openCam();
  }, []); // Sadece bir kere çağrılması için boş bağımlılık dizisi

  return (
    <div>
      <video ref={video} width="640" height="480"></video>
      <canvas ref={canvas} width="640" height="480"></canvas>
    </div>
  );
}

export default App;

Bu kod, BarcodeDetector API'sini kontrol eder ve destekleniyorsa tanıma işlemini gerçekleştirir. Ayrıca, hata durumlarını da kontrol eder ve konsola bilgi yazdırır.