Konfigurasi PDF worker pada aplikasi React yang menggunakan pustaka react-pdf sangat krusial untuk mencegah kegagalan rendering dokumen dan error Setting up fake worker di konsol browser. Masalah ini terjadi karena proses parsing dan rendering berkas PDF dijalankan pada web worker terpisah agar thread utama (UI thread) tidak mengalami pembekuan (freezing).
Untuk mengatasi dan menyiapkan worker ini secara benar, Anda dapat memilih salah satu dari tiga metode utama yang tersedia: menggunakan file worker lokal via bundler (Vite/Webpack), memanfaatkan CDN resmi, atau melakukan import langsung dari modul npm.
Metode 1: Konfigurasi Menggunakan CDN (Paling Cepat)
Cara paling instan tanpa perlu menyalin file fisik ke direktori publik proyek Anda adalah dengan memanfaatkan CDN unpkg atau cdnjs yang disesuaikan dengan versi pdfjs-dist yang terinstal.
import React from 'react';
import { Document, Page, pdfjs } from 'react-pdf';
// Sesuaikan versinya dengan versi pdfjs-dist yang digunakan oleh react-pdf
pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;
export default function PdfViewer() {
return (
<Document file="sample.pdf">
<Page pageNumber={1} />
</Document>
);
}
Metode 2: Setup Lokal dengan Vite
Jika aplikasi React Anda dibangun menggunakan bundler Vite, peletakan file worker harus diatur agar dapat diakses secara statis oleh browser tanpa masalah CORS atau jalur direktori yang salah.
| Metode Setup Worker | Kelebihan | Kekurangan |
|---|---|---|
| CDN (unpkg/cdnjs) | Tanpa konfigurasi file lokal, sangat cepat diterapkan. | Bergantung penuh pada koneksi internet dan ketersediaan server CDN. |
| Lokal via public folder | Aman untuk aplikasi offline/production internal, performa stabil. | Perlu menyalin file worker secara manual saat ada pembaruan versi. |
| Import dari node_modules (Webpack/Vite) | Sinkronisasi versi otomatis dengan dependencies. | Konfigurasi bundler bisa lebih rumit tergantung setup plugin. |
Langkah-Langkah Implementasi Lokal di Vite:
- Instal pustaka
react-pdfdanpdfjs-distmelalui terminal:npm i react-pdf pdfjs-dist. - Salin file
pdf.worker.min.mjsataupdf.worker.min.jsdari foldernode_modules/pdfjs-dist/build/ke dalam folderpublic/di project Vite Anda. - Atur konfigurasi global pada komponen utama atau entry point (misalnya di
App.jsxataumain.jsx):
import { pdfjs } from 'react-pdf';
// Arahkan langsung ke file worker di folder public
pdfjs.GlobalWorkerOptions.workerSrc = '/pdf.worker.min.mjs';
Troubleshooting Masalah Umum PDF Worker
Kendala yang sering ditemui pengembang saat mengatur worker di React meliputi:
- Worker Version Mismatch: Versi
pdfjs-disttidak sinkron dengan versi yang diminta olehreact-pdf. Pastikan mencocokkan nomor versinya atau gunakan helper dari modul. - Mime-Type Error: Server mengembalikan header
text/htmlalih-alihapplication/javascriptuntuk file worker. Pastikan ekstensi file worker menggunakan.mjsatau konfigurasi server lokal mendefinisikan tipe MIME dengan benar. - Webpack Worker Loader: Jika menggunakan Create React App atau Webpack konvensional, pastikan menggunakan import worker yang mendukung worker thread modern atau gunakan salinan statis di direktori public.