async/await を使用し、JSON をファイルに書き込んで pug テンプレートをレンダリングすることを約束するメソッドを作成しています。しかし、何らかの理由で、JSON を書き込むコードが res.render() メソッドと競合し、ブラウザーがサーバーに接続できなくなります。
奇妙なことは、コンソールにエラーが表示されず、JSON ファイルが期待どおりに生成され、ページがレンダリングされないことです。
fs-extra モジュールを使用してディスクに書き込みます。
const fse = require('fs-extra');
exports.testJSON = async (req, res) => {
await fse.writeJson('./data/foo.json', {Key: '123'})
.then(function(){
console.log('JSON updated.')
})
.catch(function(err){
console.error(err);
});
res.render('frontpage', {
title: 'JSON Updated...',
});
}
ディスクへの書き込み、および/またはエクスプレスの res.render メソッドと競合する、私が取得していない基本的なものがあると考え始めています。res.send() が正常に機能することは注目に値します。
ファイルを書き込むために別のNPMモジュールも試しました(write-json-file)。それは私にまったく同じ問題を与えました。
更新:だから私はばかです。この問題は、JSON ファイルの Express とは関係ありません。ファイルが変更されたときにサーバーを自動的に再起動するために nodemon を実行しているという事実に関係しています。そのため、JSON ファイルが保存されるとすぐにサーバーが再起動し、ページのレンダリング プロセスが停止します。とにかく私を助けようとしている素晴らしい人々に謝罪します。あなたはまだ私が問題を解決するのを助けてくれたので、本当に感謝しています!