开发者问题收集

TypeError:无法读取 Object 中未定义的属性(读取“forEach”)。<anonymous> (/home/runner/myrepl/index.js:10:6)

2022-04-04
12288

我对 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 控制它。我根本不知道这个问题。

3个回答

您尝试在 var args 存在之前迭代 args 数组 ( args.forEach() )。如果您将 var args = Message.content.split(" ") 移动到 var prefix = 'p!' 之后(循环之前),则出现的问题应该得到解决。我无法确定您的代码是否会“工作”,但这就是您收到错误的原因

Sarah Vela
2022-04-04

我从一开始就发现的一个问题是,您在声明变量之前迭代了 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

也许您可以尝试提供更多细节?也许是存储库的链接,或者至少显示您正在使用的数据结构

Nadav
2022-04-04

您目前有两次 args.forEach((a, b).. 。在定义 args 之前和之后。删除第一个。

nomutta
2022-04-04