私のプロジェクトでは、require.jsとpdf.jsライブラリを一緒に使っていました。最近まで、Pdf.jsはグローバルオブジェクトに自分自身を置いてきました。私はまだシムを使用して私のrequirejs設定でそれを使用することができます。 pdfjsライブラリは、pdf.workerという別のライブラリをロードします。このモジュールを見つけるための解決策は、workerSrcというグローバルPDFJSオブジェクトにプロパティを追加し、ディスク上のファイルをポイントすることでした。これは、pdfjsライブラリーをロードする前または後に行うことができます。 pdfjsライブラリはpdf.workerを使用してWebWorkerを開始し、そうするためにはソースファイルへのパスが必要です。pdf.jsを1.5にしてrequire.jsを一緒に使ってみましょう
プロジェクトのpdfjsライブラリを新しいバージョン(1.5.314)に更新しようとしたところ、ライブラリをロードしてインクルードする方法がUMDモジュールを使用するように変更されましたが、今はすべて手間がかかります。
pdfjsライブラリは、環境でrequirejsが使用されているかどうかをチェックし、 "pdfjs-dist/build/pdf"という名前のモジュールとして定義します。このモジュールがロードされると、 "pdfjs-dist/build/pdf.worker"という名前のモジュールがチェックされます。私は新しいパスで私のrequirejsのconfigオブジェクトにそれらを追加した別のフォルダ構造を持っているので:
paths: {
"pdfjs-dist/build/pdf": "vendor/pdfjs/build/pdf",
"pdfjs-dist/build/pdf.worker": "vendor/pdfjs/build/pdf.worker"
}
これは、すべてのモジュールを見つけるためのモジュールローダを作ることです。開発中、これは素晴らしい作品です。しかし、私のgruntビルド・ステップでrequirejsオプティマイザを使用しようとすると、すべてのプロジェクト・ファイルが1つのファイルにまとめられます。このステップは、同様pdf.workerモジュールを含むしようとすると、これはエラーを生成します。ワーカーソースは、ディスク上の単一のファイルにする必要があります
Error: Cannot uglify2 file: vendor/pdfjs/build/pdf.worker.js. Skipping it. Error is: RangeError: Maximum call stack size exceeded
以来、私はこのモジュールが含まれるようにしたくありません。 したがって、requirejs設定で2つの異なる設定を試しました。
paths: {
"pdfjs-dist/build/pdf.worker": "empty:"
}
テストの2番目のものは私のモジュールからそれを除外することである:
modules: [{
name: "core/app",
exclude: [
"pdfjs-dist/build/pdf.worker"
]
}]
両方の技術がないオプティマイザを教えてください は最初の試みは、オプションを構築し、私のうなり声でパスのプロパティをオーバーライドすることでしたモジュールを含めるには両方の試行が以前と同じエラーで終了しました。 requirejsオプティマイザはまだモジュールをビルドに含めようとしますが、それをうまくしようとするとRangeErrorで終わります。
uglifyのステップが失敗したため、それは含まれず、私は私のビジネスについて話すことができますが、醜いステップがpdfjsの新しいアップデートで動作するようになったらどうなりますか?
ビルドステップでrequirejs設定を除外するだけでなく、そのようにする方法を知ってもらえますか?
https://github.com/mozilla/pdf.js/tree/master/examples/webpackまたはhttps://github.com/mozilla/pdf.js/tree/master/examples/browserifyを参照してください。それはより明確で助かります - すべてのバンドル業者がpdf.jsでうまくいくわけではありませんuglifyエラーは別のものです(https://github.com/mozilla/pdf.js/issues/7044を参照)、クロムで動作させるには回避策が必要です。 – async5
私が経験したuglifyエラーは、実行時に参照したバグの場合のようではありません。私の問題はr.jsのビルドステップで発生します。私が持っている問題は、オプティマイザは、私がそれを知らないときにワーカーファイルを取り出そうとしているということです。 – Tryggve
右のwebpackとbrowserifyは、package.jsonを使用してそれを無視しています。 「問題(s)」(https://github.com/mishoo/UglifyJS2/search?q=Maximum+call+stack+size+exceeded&type=Issues&utf8=%E2%9C%93)には、「最大値」に関するuglifyがありましたコールスタックサイズを超えました " - 私はいくつかの構成の回避策が提案されました。 – async5