TypeError:无法读取 Object 中未定义的属性(读取“forEach”)。<anonymous> (/home/runner/myrepl/index.js:10:6)
我对 Javascript 还很陌生。所以请忍受我的乱码,但我不知道这个错误是什么意思,并且花了很长时间试图解决这个问题。我现在正在使用 Replit,但我也在 Visual Studio 上尝试过,但出现了同样的错误。请帮忙,我不知道该怎么办!
每当我尝试运行我的脚本时,它都会出现以下错误:
TypeError: Cannot read properties of undefined (reading 'forEach')
at Object.<anonymous> (/home/runner/myrepl/index.js:10:6)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47
这是我的 Index.js:
var prefix = 'p!'
args.forEach((a, b) => {
args[b] = a.replace("`", "")
args[b] = args[b].replace(".", "")
args[b] = args[b].replace("`", "")
args[b] = args[b].replace(`"`, "")
args[b] = args[b].replace(`'`, "")
})
var args = Message.content.split(" ")
if (Message.author.bot == false) {
if (Message.content.startsWith("$")) {
if (Message.channel.id != CMDS && Message.author.id != DISCORD_ID) {
Message.reply("stop using cmds here idiot. <#" + CMDS + ">")
}
}
我安装了 Node.js、discord.js、discord 和 npm。我的机器人令牌存储在 token.json 中,我的配置(discord_ID 和 CMDS 频道 ID 存储在 config.json 中)。
我正尝试使用“p!”之类的命令从 discord 控制它。我根本不知道这个问题。
您尝试在
var args
存在之前迭代 args 数组 (
args.forEach()
)。如果您将
var args = Message.content.split(" ")
移动到
var prefix = 'p!'
之后(循环之前),则出现的问题应该得到解决。我无法确定您的代码是否会“工作”,但这就是您收到错误的原因
我从一开始就发现的一个问题是,您在声明变量之前迭代了
args
--> iteration args.forEach((a, b) => {
args[b] = a.replace("`", "")
args[b] = args[b].replace(".", "")
args[b] = args[b].replace("`", "")
args[b] = args[b].replace(`"`, "")
args[b] = args[b].replace(`'`, "")
})
--> declaration var args = Message.content.split(" ")
应该反过来,像这样:
--> declaration var args = Message.content.split(" ")
--> iteration args.forEach((a, b) => {
args[b] = a.replace("`", "")
args[b] = args[b].replace(".", "")
args[b] = args[b].replace("`", "")
args[b] = args[b].replace(`"`, "")
args[b] = args[b].replace(`'`, "")
})
我注意到的第二个问题是, .split 是用于字符串的方法 和 forEach 是用于数组的方法
严格针对错误-
TypeError: Cannot read properties of undefined (reading 'forEach')
该错误意味着您无法迭代未定义的变量。
主要是因为,正如我在这里解释的那样,您在声明这样的变量之前尝试迭代
args
。尽管,为了您
.forEach()
,
args
必须是一个
Array
。
也许您可以尝试提供更多细节?也许是存储库的链接,或者至少显示您正在使用的数据结构
您目前有两次
args.forEach((a, b)..
。在定义
args
之前和之后。删除第一个。