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 definitionvar args = Message.content.split(" ")
above theargs.forEach
part. – James Commented Apr 4, 2022 at 14:52
3 Answers
Reset to default 1You 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.
本文标签:
版权声明:本文标题:javascript - TypeError: Cannot read properties of undefined (reading 'forEach') at Object.<anonymous& 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744668646a2618688.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论