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 stringsforEach is a method used on arrays

严格针对错误-

TypeError: Cannot read properties of undefined (reading 'forEach')

该错误意味着您不能迭代未定义的变量。 主要是因为,正如我在此处解释的那样,您尝试在声明此类变量之前迭代 args 。虽然,为了 .forEach()args 必须是 Array

也许你可以试着提供更多细节?也许 link 到存储库或至少显示您正在使用的数据结构