TypeError: Cannot read properties of undefined (reading 'forEach') at Object.<anonymous> (/home/runner/myrepl/index.js:10:6
TypeError: Cannot read properties of undefined (reading 'forEach') at Object.<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!”之类的命令使其不受不和谐的控制。我完全不知道这个问题
您目前 args.forEach((a, b)..
两次。定义 args
之前和之后。删除第一个。
您正试图在 var args
存在之前循环访问 args 数组 (args.forEach()
)。如果您在 var prefix = 'p!'
之后(在您的循环之前)移动 var args = Message.content.split(" ")
,那么出现的问题应该得到解决。我不能说你的代码是否会 'work',但这就是你收到错误的原因
我从 get-go 中看到的一个问题是,您在声明变量
之前迭代 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 is a method used on strings
和
forEach is a method used on arrays
严格针对错误-
TypeError: Cannot read properties of undefined (reading 'forEach')
该错误意味着您不能迭代未定义的变量。
主要是因为,正如我在此处解释的那样,您尝试在声明此类变量之前迭代 args
。虽然,为了 .forEach()
,args
必须是 Array
。
也许你可以试着提供更多细节?也许 link 到存储库或至少显示您正在使用的数据结构
我真的是 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!”之类的命令使其不受不和谐的控制。我完全不知道这个问题
您目前 args.forEach((a, b)..
两次。定义 args
之前和之后。删除第一个。
您正试图在 var args
存在之前循环访问 args 数组 (args.forEach()
)。如果您在 var prefix = 'p!'
之后(在您的循环之前)移动 var args = Message.content.split(" ")
,那么出现的问题应该得到解决。我不能说你的代码是否会 'work',但这就是你收到错误的原因
我从 get-go 中看到的一个问题是,您在声明变量
之前迭代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 is a method used on strings 和 forEach is a method used on arrays
严格针对错误-
TypeError: Cannot read properties of undefined (reading 'forEach')
该错误意味着您不能迭代未定义的变量。
主要是因为,正如我在此处解释的那样,您尝试在声明此类变量之前迭代 args
。虽然,为了 .forEach()
,args
必须是 Array
。
也许你可以试着提供更多细节?也许 link 到存储库或至少显示您正在使用的数据结构