【问题标题】:Await inside of a file in Deno在 Deno 的文件中等待
【发布时间】:2021-07-16 16:32:51
【问题描述】:

编辑

这是我的代码编辑器(VS 代码)显示错误的有效 Deno 代码。 Deno 接受此代码。


大家好,

我试图在 Deno 文件中等待,但显示以下错误,“等待”表达式只允许在异步函数中使用。由于我在文件本身中调用此命令而不是特定方法。我无法做到“异步”

我创建了一个名为 main.ts 的文件,该文件如下所示:

import { Application } from "https://deno.land/x/abc@v1.3.1/mod.ts";
import db from "./db.ts";

const app = new Application();

await db.connect(); // The "'await' expression is only allowed within an async function" error is thrown here

app.start({ port: 5000 });

有人知道如何正确执行此操作吗?

【问题讨论】:

  • Deno 支持顶层 await,已经有一段时间了,你是怎么运行的?
  • 这是 Deno 错误吗?或者你的 IDE 抛出的错误,因为这在 Deno 中是完全合法的
  • @StevenGuerrero 是的,你是对的!这是 Visual Studio 代码给出的错误不是 Deno ????。我的 Deno 扩展安装很奇怪,VS 代码仍然显示此错误。生病编辑问题!
  • @RogierdeRuijter 确保为您的工作区启用扩展。您必须打开配置扩展并单击启用复选框。这是一次性错误,真的
  • @StevenGuerrero 是的,我必须启用它!现在错误是一个,谢谢!

标签: async-await deno


【解决方案1】:

每当遇到这种情况时,您都可以创建一个异步函数来包含所有等待,这样就可以了:

import { Application } from "https://deno.land/x/abc@v1.3.1/mod.ts";
import db from "./db.ts";

async function main() {
    const app = new Application();
    
    await db.connect();  //Now you're in an async function and await is valid
    
    app.start({ port: 5000 });
}

main();

【讨论】:

  • 这确实解决了问题,但是用户 OP 遇到的问题不是由语法错误引起的,而可能是他们的开发环境中的错误配置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-26
  • 2013-12-30
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多