React Js İle Barkod Okutma Programında Aşağıdaki Hatayı Alıyorum Yardımcı Olabilir misiniz?
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']});
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
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.