質問: {'Content-Type': mimeTypes[path.extname(f)] + ';charset=utf-8'}; response.writeHead(200, headers); response.end(data); }); return; } response.writeHead(404); response.end('ページがみつかりません!'); }); }).listen(8080); ``` ### 試したこと 参考サイトをまねして例外処理を適用してみたが、変化なし。 https://www.tech-tech.xyz/nodejs-writefile-mkdir-stat-access.html#fsstatfsaccess ### 補足情報(FW/ツールのバージョンなど) node v10.15.0 npm 4.0.5 ソースコード元: oreilly 「Nodeクックブック」 レシピ 1.1 URL ルーティングを設定する https://www.amazon.co.jp/dp/4873116066?_encoding=UTF8&isInIframe=0&n=465392&ref_=dp_proddesc_0&s=books&showDetailProductDesc=1#product-description_feature_div
回答: こちらにありますように、`fs.exists`には**競合状態**(存在チェックの直後にファイルの作成・削除などが行われると想定どおりに進まない)問題があります。 > > Using fs.exists() to check for the existence of a file before calling fs.open(), fs.readFile() or fs.writeFile() is not recommended. Doing so introduces a race condition, since other processes may change the file's state between the two calls. Instead, user code should open/read/write the file directly and handle the error raised if the file does not exist. (Node.jsドキュメントより) > > > `fs.exists`でのチェックを**行わずに**`fs.readFile`を行って、`error`の際に`error.code`を見てファイルが存在しない(`ENOENT`)かそれ以外のエラー化を確認するようにしましょう。 エラーコードの一覧