首页 > 解决方案 > Async/Await 仅在读取文件时是有效的异步函数

问题描述

我试图JSON使用 Async/Await 读取文件,我创建了基于示例的Native async/await 方法,但出现此错误。

SyntaxError: await 仅在异步函数中有效

这是我的代码。

const fs = require('fs-extra');
const xml2js = require('xml2js');  
const parser = new xml2js.Parser();

const path = "file.json";

function parseJM() {
return new Promise(function (resolve, reject) {
    fs.readFile(path, { encoding: 'utf-8'}, (err, data) => {
        if (err) { reject(err); }
        else {
            resolve (parser.parseString(data.replace(/<ent_seq>[0-9]*<\/ent_seq>/g, "")
             .replace(/&(?!(?:apos|quot|[gl]t|amp);|#)/g, '')));
        }
    });
});
}

const var1 = await parseJM();
console.log(var1);

我的代码有什么问题?我的节点版本是 11.9.0,我的 npm 版本是 6.7.0,我使用的是 Arch Linux。

标签: javascriptnode.jsasynchronous

解决方案


您需要在异步函数中调用 await 。

(async () => {
    try {
        const var1 = await parseJM();
        console.log(var1);
    } catch (e) {
        console.error(e.message);
    }
})();

编辑:正如@Nik Kyriakides 所建议的那样


推荐阅读