私は、puppeteer を使用して別の Web サイトからデータをスクレイピングする Web サイトを開発しています。ローカルマシン上で npm サーバーを実行すると、データは問題なくスクレイピングされますが、これを Heroku にデプロイすると、探している最初の 3 つのファイルのみが実行され、その後停止します。
基本的に学校の Web サイトからコースに関するデータをスクレイピングしたいので、for ループ内で次の行を実行します。
let data =wait for crasher.scrapeData(classesTaken[i].code)
これにより、以下の関数が実行されます。私自身のプライバシーを考慮して、実際の Web サイトの URL を置き換えました。
リーリーこれは私自身のローカルサーバーでは正常に動作します。ただし、Heraku サイトにプッシュすると、最初の 3 クラスのコードのみが実行されます。これは、dyno のメモリ不足が原因である可能性があると感じていますが、使用可能なメモリを待機させる方法がわかりません。
これは展開ログです
リーリーこれらのコマンドを使用してビルド キャッシュをクリアしようとする記事をどこかで読みました
リーリーこれを試しましたが、何も機能しません。また、Puppeteer GitHub にある Heroku のトラブルシューティング手順に従いました。
これが私の動的記憶に関係しているのではないかと私が考える理由は、この関連記事のおかげです。この場合、使用できる空きメモリができるまで待つ方法を考えたいと思います。
編集: また、現在ブラウザをヘッドレス モードで実行していますが、まったく同じエラーが発生します。
さらにログを記録した後、ブラウザを開いたまま閉じなかったためにメモリ リークが発生したことが問題であることがわかりました。
scrapeData()
関数の return ステートメントの前に行await browser.close()
を追加すると、メモリ リークが停止し、サーバーはすべてのクラス コードを正しく解析できるようになります。