React-pdf: react-pdfからインポートした後のアプリのクラッシュ

作成日 2019年12月11日  ·  17コメント  ·  ソース: wojtekmaj/react-pdf

始める前に-チェックリスト

  • [x] React-PDFバージョン用に作成されたドキュメントの指示に従いました
  • [x]このバグがまだ報告されていないかどうかを確認しました
  • [x]問題が既知の問題にリストされていないかどうかを確認し
  • [x] PDFレンダリングに問題がある場合は、MozillaFirefoxでPDFが正しくレンダリングされるかどうかを確認しました-> PDFの問題ではありません

説明

発生したバグの簡単な説明。

行を追加すると
create-react-appで新しいアプリを作成し、npm react-pdfで追加した直後、
そのようなreact-pdfからインポートする場合:
import { Document } from "react-pdf"

私のアプリはもうコンパイルできません。

再現する手順

動作を再現する手順:

  • create-react-appを使用して新しいアプリを作成します
    npx create-react-app test-react-pdf

  • react-pdfをインストールする
    npm install react-pdf

  • src/App.js react-pdfからのインポートを追加します
    import { Document } from "react-pdf"

  • npm startを実行すると、次のように表示されます。

<--- Last few GCs --->

[47073:0x102808000]    31515 ms: Scavenge 1382.5 (1423.4) -> 1381.9 (1423.9) MB, 4.6 / 0.0 ms  (average mu = 0.125, current mu = 0.063) allocation failure
[47073:0x102808000]    31519 ms: Scavenge 1382.7 (1423.9) -> 1382.1 (1424.4) MB, 3.3 / 0.0 ms  (average mu = 0.125, current mu = 0.063) allocation failure
[47073:0x102808000]    31524 ms: Scavenge 1383.2 (1424.4) -> 1382.6 (1424.9) MB, 3.1 / 0.0 ms  (average mu = 0.125, current mu = 0.063) allocation failure


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x1d21277dbe3d]
Security context: 0x2cd62ef9e6e9 <JSObject>
    1: SourceMapConsumer_allGeneratedPositionsFor [0x2cd6b4a57591] [/Users/mypcname/Dev/test-react-pdf/node_modules/@babel/core/node_modules/source-map/lib/source-map-consumer.js:~178] [pc=0x1d212805103b](this=0x2cd682a82291 <BasicSourceMapConsumer map = 0x2cd6d22b6131>,aArgs=0x2cd638193081 <Object map = 0x2cd6d22b5529>)
    2: /* anonymous */(aka /* a...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x10003d035 node::Abort() [/usr/local/bin/node]
 2: 0x10003d23f node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
 3: 0x1001b8e15 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0x100586d72 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
 5: 0x100589845 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/bin/node]
 6: 0x1005856ef v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
 7: 0x1005838c4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
 8: 0x10059015c v8::internal::Heap::AllocateRawWithLigthRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 9: 0x1005901df v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
10: 0x10055fb24 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/bin/node]
11: 0x1007e7e04 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
12: 0x1d21277dbe3d
13: 0x1d212805103b

また、問題のあるリポジトリを作成しますhttps://github.com/ditiz/pdf-viewer
それを使用するには:

  • git clone https://github.com/ditiz/pdf-viewer.git
  • npm install
  • npm start

予想される行動

あなたは何が起こると思っていましたか?
アプリをクラッシュさせることなくreact-pdfを使用できます

追加情報

私はより多くのRAMを使用しようとしました:
react-scripts --max_old_space_size=4096 start

何も変わらない

必要に応じて、問題の説明に役立つスクリーンショット(できればブラウザコンソールを開いた状態)と問題のあるファイルを追加します。

環境

  • ブラウザ(該当する場合)[例:Chrome 57、Firefox 59]:使用されていません
  • React-PDFバージョン[例3.0.4]:4.1.0
  • Reactバージョン[例:16.3.0]:16.12.0
  • Webpackバージョン(該当する場合)[例4.16.2]:4.41.2
help wanted question

最も参考になるコメント

react-scripts3.3.0にアップグレードしたときに同じエラーが発生しました。 .env.developmentファイルに以下を追加すると、実行されます。

GENERATE_SOURCEMAP=false

全てのコメント17件

react-scripts3.3.0にアップグレードしたときに同じエラーが発生しました。 .env.developmentファイルに以下を追加すると、実行されます。

GENERATE_SOURCEMAP=false

この問題は、VSCodeデバッガーがCRAアプリのnode_modules内のコードをデバッグできるようにするためのCreate ReactAppへの最近の変更が原因であると思われます。
見る:
https://github.com/facebook/create-react-app/pull/7022/files

上記の変更を実験的に元に戻すと、問題は解決しました。 もちろん、これは問題を解決するための実行可能な方法ではありません。

craco(Create React App Configuration Override)を使用して問題を回避する方法があるのだろうか?

他のReactコンポーネントにもこの問題があるのだろうか?

Create ReactAppに問題があります。 https://github.com/facebook/create-react-app/issues/8130を参照してください。問題を報告しているユーザーはreact-pdfを使用していませんが、pdfjs-distを使用しています。

彼らは追加することによって一時的な修正を見つけました:
react-scripts --expose-gc --max-old-space-size=8192
package.jsonのスクリプトに。

これは私たちにも役立ちました。

からコンポーネントをインポートすると
import { Document, Page } from 'react-pdf/dist/entry.webpack';
すべてが正常に機能しています。
このインポートは、レンダリング作業を別のスレッドに委任し、メモリ割り当て制限の問題を明らかに修正します。
これがお役に立てば幸いです:)。

これが私のパッケージjsonです

{
  "name": "pdf-2-wc",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@material-ui/core": "^4.8.1",
    "@material-ui/icons": "^4.5.1",
    "@material-ui/lab": "^4.0.0-alpha.37",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.4.0",
    "@testing-library/user-event": "^7.2.1",
    "@types/jest": "^24.0.25",
    "@types/node": "^12.12.22",
    "@types/react": "^16.9.17",
    "@types/react-dom": "^16.9.4",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-scripts": "3.3.0",
     "react-pdf": "^4.1.0",
    "typescript": "^3.7.4",
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

typescriptを使用してcraスピンアップします。

Screen Shot 2019-12-28 at 2 40 56 PM

私がそれを殺すまで、それはStarting the development server...座って回転します。 私はしなければならなくなった。

最終的にパッケージを削除し、 scriptタグを使用してindex.htmlファイルからlibをインポートしました。

使ってます

    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-pdf": "^4.1.0",

これを乗り越えることはできません...上記のすべてを試しました...

Screen Shot 2019-12-28 at 2 40 56 PM

私が言及しなかった唯一のことは:

  • typescriptテンプレートでcraを使用します

react-scripts3.3.0にアップグレードしたときに同じエラーが発生しました。 .env.developmentファイルに以下を追加すると、実行されます。

GENERATE_SOURCEMAP=false

.env.developemtはどこにありますか

@ vammu920 .env.developmentはプロジェクトのルートにある必要があります(作成する必要がある場合があります)。

また、それはstartのみ使用されると思います; buildで機能するように、同じ内容で.env.productionを作成する必要があります。

私はこのソリューションをテストしていませんが、それは彼らがどこに行くのかについての私の理解です。

これにも出くわした。 https://github.com/wojtekmaj/react-pdf/issues/496#issuecomment -566200248提案は機能しましたが、ソースマップがブラウザーでのデバッグに役立つため、デバッグが少し難しくなることは明らかです...

react-scripts3.3.0にアップグレードしたときに同じエラーが発生しました。 .env.developmentファイルに以下を追加すると、実行されます。

GENERATE_SOURCEMAP=false

それはすごい男だ、私は何時間も立ち往生している。 ありがとうございました。

地獄屋すべて....

Create ReactAppに問題があります。 参照: facebook / create-react-app#8130問題を報告しているユーザーは、react-pdfを使用していませんが、pdfjs-distを使用しています。

彼らは追加することによって一時的な修正を見つけました:
react-scripts --expose-gc --max-old-space-size=8192
package.jsonのスクリプトに。

これは私たちにも役立ちました。

素晴らしいヒント!!!!! 現在作業中のプロジェクトで同じエラーが発生し、スクリプト>テストでこのコマンドを適用しました。 これで、すべてが完全に実行されます。 ありがとう兄貴!

react-scripts3.3.0にアップグレードしたときに同じエラーが発生しました。 .env.developmentファイルに以下を追加すると、実行されます。

GENERATE_SOURCEMAP=false

GENERATE_SOURCEMAP=falsebuildコマンド、つまり"GENERATE_SOURCEMAP=false react-scripts build"に追加すると、Netlifyで以前に失敗していたアプリが修正されました

react-scripts3.3.0にアップグレードしたときに同じエラーが発生しました。 .env.developmentファイルに以下を追加すると、実行されます。

GENERATE_SOURCEMAP=false

私と一緒に働かない:(

falseに設定すると、本番ビルドのソースマップは生成されません。 これにより、一部の小型マシンでのメモリ不足(OOM)の問題が解決されます。

.envのCRAの場合
GENERATE_SOURCEMAP = false

webpack構成の場合
devtool:false

私が行っているもう1つの解決策は、react-scripts3.2にダウングレードすることです。

https://github.com/facebook/create-react-app/issues/8096

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