[英]Cannot read property 'includes' of undefined
我是 JavaScript 新手,我是否試圖剖析嵌入的消息。 這是我的代碼,它可以正常運行幾分鍾,並相應地工作,但我知道出了什么問題。
bot.on('message', (message) => {
for (var i = 0; i < message.embeds.length; i++) {
if (message.embeds[i].title.includes("text!")) {
message.channel.send('reply')
}
}
})
這是因為 embeds 數組項中至少有一項缺少title
屬性。
您需要將 if 語句更新為:
If (message.embeds[i] &&
message.embeds[i].title && ...)
我認為這段代碼可以解決這個問題。
bot.on('message', (message) => {
for (var i = 0; i < message.embeds.length; i++) {
if (message.embeds[i] && message.embeds[i].title.includes("text!")) {
message.channel.send('reply')
}
}
})
這意味着在message.embeds[i]
中至少有一個元素沒有 title 屬性。
您應該先檢查message.embeds[i].title
存在,檢查后執行其他操作。
您可以像這樣編寫更具防御性的代碼。 代替
if(message.embeds[i].title.includes("text!"))
你可以寫如下
if(typeof message.embeds[i].title === "string" &&
message.embeds[i].title.includes("text!"))
可能某些embed
對象沒有title
屬性。
您可以安全地使用邏輯將 if 條件更改為:
if ('title' in message.embeds[i] && message.embeds[i].title.includes("text!")) {
/* ... */
}
JavaScript 不是類型安全的語言,錯誤是由類型不安全引起的。 我們將不得不檢查對象是否存在並且嵌套屬性是否存在,然后我們應該能夠檢查值。 在你的情況下:
bot.on('message', (message) => {
// check if main obj and main property exist
if (message && message.embeds) {
for (var i = 0; i < message.embeds.length; i++) {
// now, check if title exists and after check the text inside
if (
message.embeds[i].title &&
message.embeds[i].title.includes("text!"))
{
message.channel.send('reply')
}
}
}
});
它的空指針錯誤。 你的一些對象參數為空,但它映射在 html 中。 請嘗試添加更多空檢查以避免這種情況。
在訪問一個項目之前總是檢查它
bot.on('message', (message) => {
for (var i = 0; i < message.embeds.length; i++) {
if (message.embeds[i].title && message.embeds[i].title.includes("text!")) {
message.channel.send('reply')
}
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.