最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - TypeError: Cannot read properties of undefined (reading 'forEach') at Object.<anonymous&

programmeradmin2浏览0评论

I'm really new to Javascript. So please bear with my garbage coding but I do not know what this error means and have spent really long trying to solve this. I am using Replit right now but I have also tried it on Visual Studio which gives the same error. Please help, I have no idea what to do!

Whenever I try to run my script it keeps erroring with this:

TypeError: Cannot read properties of undefined (reading 'forEach')
    at Object.<anonymous> (/home/runner/myrepl/index.js:10:6)
    at Module._pile (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

Here Is my 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 + ">")
    }
  }

I have Node.js, discord.js, discord, and npm installed. My bot token is stored in token.json and my config (discord_ID and CMDS channel ID is stored in config.json).

I am trying to make it controlled from discord with a mand like "p!". I don't know this problem at all.

I'm really new to Javascript. So please bear with my garbage coding but I do not know what this error means and have spent really long trying to solve this. I am using Replit right now but I have also tried it on Visual Studio which gives the same error. Please help, I have no idea what to do!

Whenever I try to run my script it keeps erroring with this:

TypeError: Cannot read properties of undefined (reading 'forEach')
    at Object.<anonymous> (/home/runner/myrepl/index.js:10:6)
    at Module._pile (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

Here Is my 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 + ">")
    }
  }

I have Node.js, discord.js, discord, and npm installed. My bot token is stored in token.json and my config (discord_ID and CMDS channel ID is stored in config.json).

I am trying to make it controlled from discord with a mand like "p!". I don't know this problem at all.

Share Improve this question edited Apr 6, 2022 at 12:35 user18383426 asked Apr 4, 2022 at 14:47 user18383426user18383426 1311 gold badge2 silver badges9 bronze badges 3
  • I'm assuming it's erroring with args.forEach(). args doesn't seem to be defined. – mykaf Commented Apr 4, 2022 at 14:50
  • how would I be able to fix this? – user18383426 Commented Apr 4, 2022 at 14:51
  • 1 You define args after you use it. Move the definition var args = Message.content.split(" ") above the args.forEach part. – James Commented Apr 4, 2022 at 14:52
Add a ment  | 

3 Answers 3

Reset to default 1

You are trying to iterate through the args array (args.forEach()) before var args exists. If you move var args = Message.content.split(" ") just after var prefix = 'p!' (before your loop) then the issue presented should be solved. I couldn't say whether your code will then 'work', but it is why you are getting the error

One of the issues that I see from the get-go is, you are iterating args before you declare the variable

--> 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(" ")

it should be the other way around, like that:

--> 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(`'`, "")

})

second this that i noticed is, .split is a method used on strings and forEach is a method used on arrays

strictly for the error -

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

that error means that you can not iterate an undefined variable. mainly because, as I explained up here, you try to iterate args before declaring such a variable. although, in order to you .forEach(), args must be an Array.

perhaps you could try and give more details? perhaps a link to a repository or at least show the data structure that you are using

You currently have args.forEach((a, b).. twice. Before and after defining args. Remove the first one.

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论