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,可以按以下步骤修改:
- 要么把当前js文件的后缀从
.js改成.mjs,要么在和文件同级的package.json中新增配置项"type": "module" - 把
require导入语法改成ES模块的import语法,代码如下:
import CSVtoJSON from 'csvtojson' const data = await CSVtoJSON().fromFile('./input.csv') console.log(data)
内容的提问来源于stack exchange,提问作者Ataxote
相关产品推荐
相关产品推荐

