javascript - 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。
解决方案
您需要在异步函数中调用 await 。
(async () => {
try {
const var1 = await parseJM();
console.log(var1);
} catch (e) {
console.error(e.message);
}
})();
编辑:正如@Nik Kyriakides 所建议的那样
推荐阅读
- javascript - 如何防止硬跳以及位置的替代方法:粘性?
- python - CRAN 提交仅适用于 mac Keras。架构是 32 位的,但是这个版本的 Python 是为 64 位编译的。执行停止
- python - Python 日志记录:unicode 符号是 unicode 转义的
- php - 如何在 20 行表上显示 5 条记录?
- sql - 使用列作为 where 并在其中包含减法
- php - 表单数据不会进入我的数据库没有显示错误
- authentication - 如何为多个公司使用同一个帐户(就像同一个帐户可以用于 Slack 上的多个工作区)
- javascript - 如何在 VuePress 中编写带有预览的 Vue 代码演示?
- ios - 当使用 Parse 查询数据时,我的视图仅在重复后加载
- laravel - Laravel - 另一个模型中的查询范围不起作用