ASYNC / AWAIT SyntaxError:await 仅在异步函数和模块的顶级主体中有效

共济失调

我正在做一些关于使用csvtojson 节点模块将 csv 文件读取为 json 格式的非常简单的测试,我使用下面的代码作为模板

a,b,c
1,2,3
4,5,6
*/
const csvFilePath='<path to csv file>'
const csv=require('csvtojson')
csv()
.fromFile(csvFilePath)
.then((jsonObj)=>{
    console.log(jsonObj);
    /**
     * [
     *  {a:"1", b:"2", c:"3"},
     *  {a:"4", b:"5". c:"6"}
     * ]
     */ 
})
 
// Async / await usage
const jsonArray=await csv().fromFile(csvFilePath);

我主要关注

// 异步/等待用法

const jsonArray=await csv().fromFile(csvFilePath);

代码段。没错,这是我的代码

// const JSONtoCSV = require("json2csv")
// const FileSystem = require("fs")

async function test()
{
    const data = await CSVtoJSON().fromFile('./input.csv')
    return data
}

let temp = await test()

console.log(temp)

无论我尝试过哪种方式,我总是收到以下错误

let temp = await test()
           ^^^^^

SyntaxError: await is only valid in async functions and the top level bodies of modules
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1031:15)
    at Module._compile (node:internal/modules/cjs/loader:1065:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
    at node:internal/main/run_main_module:17:47

或者

const data = await CSVtoJSON().fromFile('./input.csv');
             ^^^^^

SyntaxError: await is only valid in async functions and the top level bodies of modules
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1031:15)
    at Module._compile (node:internal/modules/cjs/loader:1065:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
    at node:internal/main/run_main_module:17:47

如果我像这样将代码切换为所有顶级

const CSVtoJSON = require("csvtojson")
// const JSONtoCSV = require("json2csv")
// const FileSystem = require("fs")

const data = await CSVtoJSON().fromFile('./input.csv')

console.log(data)

我不明白为什么这不起作用。

编辑:我按照@tasobu 的说明进行了更改。现在我得到的只是一个回报的承诺

const data = (async () => {
    return await CSVtoJSON().fromFile('./input.csv')
})

console.log(data)
Debugger attached.
Promise { <pending> }
Waiting for the debugger to disconnect...
冷冻

一个Promise回报的东西在未来,所以你需要一种方法来等待它。

// const CSVtoJSON = require("json2csv")
// const FileSystem = require("fs")
let temp = undefined;

async function test()
{
    const data = await CSVtoJSON().fromFile('./input.csv')
    // do your stuff with data
    
    temp = data;

    console.log(temp) // at this point you have something in.
    return true
}

test();
console.log(temp) // at this point nothing was there.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

未捕获的 SyntaxError:await 仅在 async 函数中的 async 函数中有效

SyntaxError:await 仅在 async 函数中有效,但 async 已包含在内

SyntaxError:“await”仅在“async”函数中有效 - 需要帮助

For 循环 - SyntaxError: await 仅在异步函数中有效

获取 SyntaxError: await 仅在异步函数和模块的顶层主体中有效,同时通过 discord.js 指南工作

await 总是抛出 SyntaxError: await 仅在 sequelize 的异步函数中有效

SyntaxError:await 仅在带有 Apify Metamorph 的异步函数中有效

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

for循环中的“ await仅在异步函数中有效”

EvaulateScriptAsPromiseAsync和async / await

`SyntaxError:await 仅在异步函数中有效`,同时尝试在 node rest api 中注册用户

给出 await 的异步函数仅在异步函数中有效

“await 仅在异步函数中有效”,而它是一个异步函数

Google Cloud / Firebase 函数:await 仅在异步函数中有效

当调用的函数具有 async 关键字时,await 会引发 SyntaxError:Python

使用 async await 和 axios

嵌套的promise,await和async

SyntaxError:当使用Node JS连接到Mongo DB时,await仅在异步功能中有效

await 仅在异步函数 discord.js 中有效

Await仅在使用Node.js的异步函数中有效

“await 仅在异步函数中有效” discord.js

await 仅在异步函数 Discord bot 反应角色中有效

Future / Await和Async / Await有什么区别

即使等待位于 Node.js 中的异步函数中,如何修复“await 仅在异步函数中有效”?

NodeJS async/await 和函数调用

async / await 函数和返回值

带有“ await import(...)”的未捕获的SyntaxError

await仅在异步功能中有效-异步中的eval

如何从async / await函数正确返回结果?

TOP 榜单

热门标签

归档