我有一個基本的 Web 應用程式設定,其檔案結構類似于:
WEB APP
- data
-year.txt
- cron
-write.js
一個包含兩個檔案夾的父目錄,每個檔案夾包含一個檔案。write.js 檔案在后端生成一堆資料,JSON.string 化該資料并將字串寫入位于另一個檔案夾中的 year.txt 檔案。這就是它在 write.js 檔案中的樣子:
try {
fs.writeFile(__dirname '/../data/year.txt', JSON.stringify(organizedData), () => {
console.log('SUCCESS');
res.status(200);
res.send(null);
});
} catch (e) {
res.status(500);
console.log(e);
res.send(null);
}
所有這些在我的本地服務器上都可以正常作業,write.js 檔案使用正確的資料更新 year.txt。我只是在努力弄清楚為什么這在我的生產服務器上不起作用,該服務器托管在 Google Cloud App Engine 上。真正讓我困惑的部分是,當我檢查此生產服務器上的日志時,我收到“SUCCESS”訊息,這意味著 fs.writeFile 函式沒有拋出任何錯誤。我檢查year.txt檔案的url路徑,沒有添加任何內容。我似乎無法弄清楚這一點,它可能與 writeFile 函式中的檔案路徑有關嗎?
uj5u.com熱心網友回復:
fs.writeFile()將其錯誤作為第一個引數傳遞給回呼err(您沒有注意)。因此,您要做的第一件事就是記錄實際錯誤fs.writeFile()。但是,我會“猜測”這是您嘗試在托管配置中寫入的目錄的檔案權限錯誤。
fs.writeFile()不會通過拋出例外來傳達錯誤。因此,您需要捕獲如下錯誤:
fs.writeFile(__dirname '/../data/year.txt', JSON.stringify(organizedData), (err) => {
if (err) {
console.log(err);
res.sendStatus(500);
} else {
console.log('SUCCESS');
res.sendStatus(200);
});
它可能與writeFile函式中的檔案路徑有關嗎
應該是。但是記錄實際錯誤將為您提供更多資訊。您還可以閱讀有關您的托管配置的一些檔案,以找出允許您從服務器行程寫入的確切位置。
這是Google Cloud 應用引擎檔案中關于將資料寫入檔案的參考。它建議您寫入臨時目錄或寫入 Google Cloud 存盤。
uj5u.com熱心網友回復:
這可能與您服務器環境中的檔案系統讀寫策略有關,您需要驗證您的節點應用程式是否有足夠的權限在該特定目錄中寫入檔案
記錄實際錯誤將為您和我提供更多資訊。您還需要閱讀有關您的一些檔案,以找出允許您從服務器行程寫入的確切位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/423126.html
標籤:
上一篇:Google應用引擎Django應用間歇性崩潰,但日志檔案沒有顯示原因
下一篇:無法匯入pyrebaseGAE
