プログラマーですが何か?まだプログラマーですが何か?プログラマーネタとアスリートネタ中心。バージョンがあっていない、というエラーです。インストールされていてエラーが発生している、というメッセージが表示されています)。エラーなどが発生した場合に表示されるエラーページをカスタマイズできないか、と思って挑戦してみました。作ることを想定しています。ルーティングを2つ定義しています。エラーが発生するようにしています)。いうテンプレートを使って、アクセスしたパス(/home)が存在していない、という旨のエラーページを表示します。エラーが発生した場合の処理を定義しています。いうテンプレートを使って、エラーの内容をあわせて表示します。ページが表示されることになります。err500.ejs)を用意します。フォルダに存在していることを前提に参照するようにしています。ファイルを格納しておきます。実際に動かして試してみました。エラーを発生させてみた時の画面です。エラーを発生させてみた時の画面です。カスタムエラーページを作れることがわかりました。サブフォルダの中にある画像ファイル全てを取り出して、各ファイルに対して何らかの処理をする・・・という、よくあるとまで言えるかどうかはわかりませんが、ごく普通の内容だと思います。この処理中に上記のエラーが発生しました。エラーそのものもネイティブコードの中で発生しているので、どの画像ファイルを読み込んでいる時のエラーかはわかるのですが、何が原因のエラーなのかのヒントはほとんどありませんでした(結論としては画像ファイル側の問題ではないので、どの画像ファイルであったかは解決の上ではあまり重要な情報ではありませんでした)。エラーメッセージそのものから原因はなんとなく推測できました。ループで各ファイル毎になんらかの処理をする、というものです。files(ファイルを開きすぎている)"。実際、このフォルダ内には非常に多くのファイルが存在していたのですが、それらを同時に開きすぎて、処理の限界を超えてしまった、というエラーが発生していたようです。いうわけで原因はなんとなくわかりました。本当の問題はここから。非同期に処理を実行します。上記のようなケースでは「ファイルを1つずつ開いて処理をして、終わったら閉じて次へ」ではなく、「同時に(非同期に)全ファイルを開いて、同時に(非同期に)全ファイルに処理を施して・・・」という形で実行されます。いうエラーが発生していたのでした。議論(後述)されていました。ライブラリそのものを改良したものを使う、という方法が紹介されていました。イベントを検知したら、少し待ってからやり直し処理を行う(という方法でエラーを回避しながら全ファイルを処理する)、という処理が実装されたもののようです。graceful-fsそしてコードを書き換えます。});});それにしても同期/非同期処理の頭を素早く切り替え出来るのって、それだけで才能ではないかと思う。使っていて気付いたこと/考えさせられたことをまとめてみました。明快な結論や提案があるわけではなく、グダグダに感じられる内容かもしれないので、あらかじめご了承ください。使ったウェブアプリケーションを作って運用している中で、おかしな挙動に気付くことがありました。以前は問題なく動いていたのに、あるタイミングで実行すると期待通りに動かない、という「まあまあよくある」ケースです。自分のケースでは動かないというよりも、タイムアウトを起こすような挙動になっていました。そのものが止まっている様子はない、というケースでした。エラーを起こしている様子もなく、原因究明に時間を要するものでした。ユニットテストのようなツールを動かした結果気付くことがありました。原因のエラーが発生している、という内容でした。Limit(1日で使える回数の上限)が決められていて、その上限に達したのでもう実行できない、という内容です。エラーの原因はわかりました。