fs_promises_readdir 是异步函数吗?

时间:2021-04-12 12:36:53

标签: node.js fs readdir

基本上,我想要的是从目录中读取所有文件名,我发现这个 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,则意味着它是异步的。对吗?

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

1 个答案:

答案 0 :(得分:1)

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

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

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