admin管理员组

文章数量:1393071

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.

本文标签: