Pdf.js: getDocumentがJest / JSDom環境でハングする

作成日 2018年03月18日  ·  4コメント  ·  ソース: mozilla/pdf.js

PDF.js 2.0.385以降では、次の最も簡単な例を実行します。

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

明らかに、Node.jsで正常に動作します。

この例のように、Jestで同じ部分を実行します(簡略化すると、テストは非同期である必要があるという事実を無視してください)。

describe('Test', () => {
  it('does something', () => {
    pdf.getDocument({ data: arrayBufferData })
      .then(() => console.log('Success'))
      .catch() => console.log('Fail'));
  });
}
  • testEnvironment"node"に設定されている場合、成功します。
  • testEnvironment"jsdom" (デフォルト)に設定されている場合、ハングして.then()に到達することはありません。

PDF.js 2.0.305以前では、ワーカーを手動で簡単に無効にできるため、これは問題になりません。

#9385の時点では、configを介してこれを行う方法がないため、 PDF.jsとJest / JSDomを使用するすべてのプロジェクトは、PDF.js関連のものをテストできなくなりますtestEnvironment"node"に切り替えることは通常オプションではありません。これにより、フロントエンド上の他のすべてが事実上失敗するためです。

1-core

最も参考になるコメント

私はなんとかそれに対処することができました! 私のように立ち往生している人のために、 pdfjs.GlobalWorkerOptions.workerSrcまたはpdfjs.GlobalWorkerOptions.workerPortを設定しないでください。 代わりに、pdf.worker.entry.jsファイルを使用してください-それをインポートするだけで完了です!

全てのコメント4件

ISSUE_TEMPLATE.mdCONTRIBUTING.mdの両方で述べられているように:
カスタム実装の問題については、問題を実行可能にするために、完全で小さな実行可能な例へのアクセスを提供する必要があります。 また、人々がさまざまなJSフレームワーク(この場合は「Jest」)に精通していると思い込まないでください。

コンテキストやコードがないと、次の質問が思い浮かびます。
ワーカーはサポートされていますか?サポートされている場合は、 workerSrcオプションを設定して、ワーカーを有効にしてテストを実行しようとしましたか?
workerPortオプションを使用してワーカーファイルをロードしようとしましたか? ワーカーをgetDocumentに渡すことも可能であることに注意してください。https: //github.com/mozilla/pdf.js/blob/0d391daccc2f4e4b9c91268e719bd10fe63a49ae/src/display/api.js#L129-L130を参照してください。

私はなんとかそれに対処することができました! 私のように立ち往生している人のために、 pdfjs.GlobalWorkerOptions.workerSrcまたはpdfjs.GlobalWorkerOptions.workerPortを設定しないでください。 代わりに、pdf.worker.entry.jsファイルを使用してください-それをインポートするだけで完了です!

上記の解決策は私にはうまくいきませんでした、代わりに私はjsdomの代わりにノードを使用するようにjestを構成する必要がありました(デフォルトで有効になっています)

これをスペックファイルの先頭に追加すると解決しました

/**
 * @jest-environment node
 */

私にとって、上記の解決策はどれも機能していません。 jestテストでvue-cliを使用しています

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

anggikolo11 picture anggikolo11  ·  3コメント

SehyunPark picture SehyunPark  ·  3コメント

timvandermeij picture timvandermeij  ·  4コメント

jigskpatel picture jigskpatel  ·  3コメント

brandonros picture brandonros  ·  3コメント