Javascript SyntaxError:“;等待“;仅在“中”中有效;异步;功能-需要帮助
所以,我正在构建一个机器人(专门针对Discord),我对JavaScript和一般的编码非常陌生 我在看一个关于从区域命令中清除消息的教程(你告诉机器人要删除多少消息,它就会这样做) 一切都进行得很顺利,我在这个命令上工作了将近一个小时,在我保存并运行CMD中的“bot”之后,我得到了这个错误(显示在错误部分和预期结果区域) 基本上: const fetched=wait message.channel.fetchMessages({limit:args[0]}) SyntaxError:await仅在异步函数中有效 但我很确定它是一个Javascript SyntaxError:“;等待“;仅在“中”中有效;异步;功能-需要帮助,javascript,asynchronous,async-await,syntax-error,discord.js,Javascript,Asynchronous,Async Await,Syntax Error,Discord.js,所以,我正在构建一个机器人(专门针对Discord),我对JavaScript和一般的编码非常陌生 我在看一个关于从区域命令中清除消息的教程(你告诉机器人要删除多少消息,它就会这样做) 一切都进行得很顺利,我在这个命令上工作了将近一个小时,在我保存并运行CMD中的“bot”之后,我得到了这个错误(显示在错误部分和预期结果区域) 基本上: const fetched=wait message.channel.fetchMessages({limit:args[0]}) SyntaxError:aw
异步
函数,我对编码还是很陌生,所以我可能已经关闭了它或者其他什么,不确定
仅供参考,在第31行中,我以为我“打开”了一个async
东西,但也许我关闭了它
我没有发送完整的代码
因为我对编码非常陌生,所以我真的做不了太多。我确实添加了一个“;”(不带引号),解决了一个错误,但不是我要问的那个错误
//清除消息命令。
if(msg.startsWith(prefix+'PURGE')){//命令检查为“!PING”,但检查为“startWith”,因为您将添加一个数字。
//在异步中包装,因为“`waitis``只能在异步中工作。
异步函数清除(){
message.delete();//删除命令触发器,以更全面地清理聊天。
//现在,我们要检查用户是否具有“主持人”角色。
if(!message.member.roles.find(“name”,“mediator”){//检查他们是否没有该角色(“!”颠倒了真/假)
message.channel.send('您需要主持人角色才能使用此命令!');
return;//这将返回代码,因此其余部分不会运行。
}
}
//检查参数是否为数字。
if(isNaN(args[0])){
//发布消息为NaN(不是数字)
message.channel.send('您的参数不是数字。\n用法:'+
前缀+'purge');//\n变为新行。
//停止操作,因此不会开始删除邮件。
返回;
}
const fetched=await message.channel.fetchMessages({limit:args[0]});//这取参数号。
预期结果:Bot打开并删除大量指定的消息
完整错误消息:
C:\Users\xxxx\OneDrive\Desktop\Xxxxx\xxx.js:49
const fetched=await message.channel.fetchMessages({limit:args[0]});//这取参数号
SyntaxError:await仅在异步函数中有效
at模块编译(内部/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:789:10)
at Module.load(内部/modules/cjs/loader.js:653:32)
在tryModuleLoad(内部/modules/cjs/loader.js:593:12)
at Function.Module._load(内部/modules/cjs/loader.js:585:3)
位于Function.Module.runMain(internal/modules/cjs/loader.js:831:12)
启动时(内部/bootstrap/node.js:283:19)
在bootstrapNodeJSCore(internal/bootstrap/node.js:622:3)
您必须将方法标记为
async
来自Mozilla的示例
为了使用
wait
,您的最后一次提取需要包装在一个异步函数中。或者您需要使用then
来解析承诺
const getData = async (arg) => {
const data = await message.channel.fetchMessages({limit: args})
return await data.json()
}
在这个例子中,您必须解析getData
,这意味着您要么使用然后使用,要么将其上下文包装在async
中,因此将其包装在异步函数中
async function func() {
await ~
}
或:
我不能完全理解你的代码,但我认为你应该在这个函数的顶部添加“async”
async function func() {
await ~
}
按照那种风格修改代码它说await
仅在async
函数内有效。它没有说它是用于async
函数。你在async
函数外调用await
函数{
在if
语句中声明,它永远不会被调用dit's just SyntaxError。检查语法
message.channel.fetchMessages({limit: args[0]})
.then(response => response.json())
.then(data => {
/* do something here */
})
async function func() {
await ~
}