我正在嘗試制作一個 Discord 機器人,它的一個特點是它下棋,在命令開始時,我讀取 JSON 檔案,然后檢查是否是undefined因為我將從物件中呼叫一個鍵,所以只是如果它不存在,我將創建所需的資料
問題是,當我嘗試分配資料時,它說我還沒有初始化變數,這很奇怪,因為我確實在 3 行之前初始化了它var,let并且const都拋出了相同的錯誤
另一件事是,在 if 陳述句之外,就在它上面,當 console.logging 它時,它作業得很好,但是當 console.logging 它在 if 陳述句中時,它會拋出那個錯誤
老實說,我不知道這里發生了什么,我也想不出任何導致這種情況的原因,這是 NodeJS 錯誤嗎?我覺得可能。
const games = JSON.parse(fs.readFileSync("./lib/database/games/chess/chess_games.json"))
console.log(games, 'outside if statement') // Here it outputs just fine
if (games[interaction.guild.id] == undefined) {
console.log(games, 'inside if statement') // Here is where it breaks
games[interaction.guild.id] = {
games: {},
players: {},
amount_of_games: 0
}
fs.writeFileSync("./lib/database/games/chess/chess_games.json", JSON.stringify(games, null, 2));
const games = JSON.parse(fs.readFileSync("./lib/database/games/chess/chess_games.json"))
}
這是錯誤:
ReferenceError: Cannot access 'games' before initialization
at Object.execute (C:\Users\aschr\Dropbox\Coding\Javascript\entropic_bot\lib\database\bot\commands\chess.js:40:4)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Client.<anonymous> (C:\Users\aschr\Dropbox\Coding\Javascript\entropic_bot\index.js:44:3)
uj5u.com熱心網友回復:
您有兩個具有相同名稱的變數。
更改其中之一的名稱
由于提升,第二個games被嘗試訪問而不是第一個。這就是你收到錯誤的原因
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/520434.html
