基本上,我想要的是从目录中读取所有文件名,我发现这个 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,则意味着它是异步的。对吗?
所以,我不知道我错过了什么?
答案 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);
})()
}()