Javascript SyntaxError:“;等待“;仅在“中”中有效;异步;功能-需要帮助

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

所以,我正在构建一个机器人(专门针对Discord),我对JavaScript和一般的编码非常陌生

我在看一个关于从区域命令中清除消息的教程(你告诉机器人要删除多少消息,它就会这样做)

一切都进行得很顺利,我在这个命令上工作了将近一个小时,在我保存并运行CMD中的“bot”之后,我得到了这个错误(显示在错误部分和预期结果区域)

基本上:

const fetched=wait message.channel.fetchMessages({limit:args[0]})

SyntaxError:await仅在异步函数中有效

但我很确定它是一个
异步
函数,我对编码还是很陌生,所以我可能已经关闭了它或者其他什么,不确定

仅供参考,在第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 ~
}