fs_promises_readdir 是异步函数吗?

Is fs_promises_readdir an async function?

基本上,我正在尝试的是从一个目录中读取所有文件名,我发现这个 fsPromises.readdir 几乎可以满足我的要求:

我从 nodeJS 文档页面获取了这段代码,此处:

https://nodejs.org/api/fs.html#fs_fspromises_readdir_path_options

import { readdir } from 'fs/promises'; // I changed this to : const readdir = require('fs/promises');

try {
  const files = await readdir(path);
  for await (const file of files)
    console.log(file);
} catch (err) {
  console.error(err);
}

当我运行这个时,控制台会给我以下错误:


const files = await readdir(path);
                ^^^^^

SyntaxError: await is only valid in async function

这很奇怪,因为根据文档,此函数是一个 Promise,如果它是一个 Promise,则意味着它是异步的。对吗?

所以,我不知道我错过了什么?

您看到的错误是指您在异步函数之外使用了 await 关键字。

我认为这在最新版本的 Node 中是允许的,但如果您是 运行 旧版本,则需要将代码包装在异步函数中。

(async function() {
    try {
      const files = await readdir(path);
      for await (const file of files)
        console.log(file);
    } catch (err) {
      console.error(err);
    })()
}()