fs_promises_readdir 是异步函数吗?
Is fs_promises_readdir an async function?
基本上,我正在尝试的是从一个目录中读取所有文件名,我发现这个 fsPromises.readdir 几乎可以满足我的要求:
- Returns 目录中文件名的数组。
我从 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);
})()
}()
基本上,我正在尝试的是从一个目录中读取所有文件名,我发现这个 fsPromises.readdir 几乎可以满足我的要求:
- Returns 目录中文件名的数组。
我从 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);
})()
}()