Pdf.js: getDocument hang di lingkungan Jest/JSDom

Dibuat pada 18 Mar 2018  ·  4Komentar  ·  Sumber: mozilla/pdf.js

Pada PDF.js 2.0.385 dan yang lebih baru, jalankan contoh paling sederhana berikut:

pdf.getDocument({ data: arrayBufferData })
  .then(() => console.log('Success'))
  .catch() => console.log('Fail'));

berjalan dengan baik di Node.js, tentu saja.

Menjalankan bagian yang sama di Jest, seperti dalam contoh ini (disederhanakan, harap abaikan fakta bahwa pengujian harus asinkron):

describe('Test', () => {
  it('does something', () => {
    pdf.getDocument({ data: arrayBufferData })
      .then(() => console.log('Success'))
      .catch() => console.log('Fail'));
  });
}
  • jika testEnvironment disetel ke "node" , berhasil.
  • jika testEnvironment disetel ke "jsdom" (default), hang dan tidak pernah mencapai .then() .

Pada PDF.js 2.0.305 dan sebelumnya hal ini tidak menjadi masalah, karena Anda dapat dengan mudah menonaktifkan pekerja secara manual.

Sekarang tidak ada cara untuk melakukannya melalui konfigurasi pada #9385, semua proyek yang menggunakan PDF.js dan Jest/JSDom tidak akan dapat menguji apa pun yang terkait dengan PDF.js . Mengalihkan testEnvironment ke "node" biasanya bukan pilihan karena ini akan menyebabkan hampir semua hal lain di front-end gagal.

1-core

Komentar yang paling membantu

Saya telah berhasil menghadapinya! Bagi mereka yang terjebak seperti saya, JANGAN setel pdfjs.GlobalWorkerOptions.workerSrc atau pdfjs.GlobalWorkerOptions.workerPort . Sebagai gantinya, gunakan file pdf.worker.entry.js - cukup impor dan selesai!

Semua 4 komentar

Seperti yang disebutkan dalam ISSUE_TEMPLATE.md dan CONTRIBUTING.md :
Untuk masalah dengan penerapan kustom, Anda perlu memberikan akses ke contoh yang lengkap, dan kecil, yang dapat dijalankan agar masalah dapat ditindaklanjuti. Dan tolong jangan berasumsi bahwa orang akrab dengan berbagai kerangka kerja JS, dalam hal ini "Jest".

Tanpa konteks atau kode apa pun, pertanyaan berikut muncul di benak:
Apakah pekerja didukung, dan jika demikian, apakah Anda sudah mencoba menyetel opsi workerSrc dan menjalankan pengujian dengan pekerja diaktifkan?
Sudahkah Anda mencoba menggunakan opsi workerPort untuk memuat file pekerja? Ingatlah bahwa itu juga memungkinkan untuk meneruskan pekerja ke getDocument , lihat https://github.com/mozilla/pdf.js/blob/0d391daccc2f4e4b9c91268e719bd10fe63a49ae/src/display/api.js#L129 -L130

Saya telah berhasil menghadapinya! Bagi mereka yang terjebak seperti saya, JANGAN setel pdfjs.GlobalWorkerOptions.workerSrc atau pdfjs.GlobalWorkerOptions.workerPort . Sebagai gantinya, gunakan file pdf.worker.entry.js - cukup impor dan selesai!

Solusi di atas tidak berfungsi untuk saya, sebaliknya saya harus mengonfigurasi lelucon untuk menggunakan node alih-alih jsdom (diaktifkan secara default)

Menambahkan ini ke bagian atas file spesifikasi saya menyelesaikannya

/**
 * @jest-environment node
 */

Bagi saya tidak ada solusi di atas yang berfungsi. Saya menggunakan vue-cli dengan tes lelucon

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

brandonros picture brandonros  ·  3Komentar

dmisdm picture dmisdm  ·  3Komentar

jigskpatel picture jigskpatel  ·  3Komentar

AlexP3 picture AlexP3  ·  3Komentar

patelsumit5192 picture patelsumit5192  ·  3Komentar