You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js使用csvtojson时出现await仅支持async函数/模块顶层报错

问题核心原因

你遇到的所有报错和异常输出都是Node.js模块规则和async/await语法的基础限制导致的:

  • 你当前使用的是CommonJS模块(默认用require导入依赖的js文件默认都是CommonJS),不支持顶层await语法,只有ES模块才支持该特性
  • 你后续写的立即执行异步函数(IIFE)只完成了定义,没有执行,且直接打印Promise实例只会输出 pending 状态,不会自动拿到异步返回结果

可直接运行的解决方案,按需选择即可

方案1:使用Promise.then写法(无需修改任何模块配置,最便捷)

const CSVtoJSON = require("csvtojson")

CSVtoJSON()
.fromFile('./input.csv')
.then(data => {
    console.log(data)
    // 后续处理data的逻辑都写在这里
})
.catch(err => {
    // 捕获文件读取、解析失败的错误
    console.error('解析出错:', err)
})

方案2:正确使用立即执行异步函数

你之前的写法少了函数执行的括号,且不能直接把异步函数的返回值赋值给变量同步打印,正确写法如下:

const CSVtoJSON = require("csvtojson")

(async () => {
    const data = await CSVtoJSON().fromFile('./input.csv')
    console.log(data)
    // 后续处理data的逻辑都写在这个匿名函数内部
})()
.catch(err => {
    console.error('解析出错:', err)
})

方案3:开启ES模块支持使用顶层await

如果想要直接在顶层写await,可以按以下步骤修改:

  1. 要么把当前js文件的后缀从.js改成.mjs,要么在和文件同级的package.json中新增配置项"type": "module"
  2. 把require导入语法改成ES模块的import语法,代码如下:
import CSVtoJSON from 'csvtojson'

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

内容的提问来源于stack exchange,提问作者Ataxote

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:21:00