如何修复JSON解析Unexpected token / in JSON at position 233报错?
问题根因
你这段代码有3个明显的逻辑错误,直接触发报错:
- 执行顺序颠倒:如果要解析JSON字符串,必须先对字符串做
trim()等清理操作,再调用JSON.parse(),你先执行解析再调用字符串方法,逻辑完全错误 - 常量非法赋值:用
const声明的变量不允许重新赋值,你在const v2abi = JSON.parse(v2_ABIs)之后再写v2abi = v2abi.trim(),本身就会触发类型错误 - API误用:Node.js环境中用
require()引入.json后缀文件时,会自动完成JSON解析,直接返回对应的JS对象/数组,不需要再手动调用JSON.parse()
你遇到的Unexpected token / in JSON at position 233报错,本质是传入JSON.parse的内容不符合标准JSON语法:位置233处出现了JSON不支持的/字符,大概率是你的Uniswap_V2_ABIs.json文件里写了//形式的单行注释,或者存在未转义的斜杠——标准JSON规范不支持任何注释格式。
修复方案
根据你的文件情况二选一即可:
方案1:JSON文件为标准无注释格式(推荐)
直接用require引入即可,不需要额外的解析、清理操作,代码简化为:
const v2abi = require("./Uniswap_V2_ABIs.json"); console.log(v2abi);
方案2:JSON文件带//注释的情况
不要用require直接引入,先通过文件读取API拿到字符串,清理掉非法内容后再解析:
const fs = require('fs'); // 同步读取文件为字符串 const abiRawStr = fs.readFileSync("./Uniswap_V2_ABIs.json", 'utf-8'); // 先清理:去除首尾空白 + 移除所有//单行注释 const abiCleanStr = abiRawStr.trim().replace(/\/\/.*$/gm, ''); // 清理完成后再做JSON解析 const v2abi = JSON.parse(abiCleanStr); console.log(v2abi);
排查技巧
如果修复后仍报同类语法错误,可以在JSON.parse调用前打印待解析的完整字符串,直接定位到报错位置的非法字符,删除或转义后即可解决。
内容的提问来源于stack exchange,提问作者Pimparoo
相关产品推荐
相关产品推荐

