json-parse-even-better-errors

中文文档
6.0.0发布于 2026/05/09MITCommonJS零依赖构建来源已验证近 30 天下载 4.6亿

JSON.parse 有错误的上下文信息

中文使用文档
文档目录6 节
  1. 安装
  2. 目录
  3. 示例
  4. 特征
  5. 缩进
  6. API 密码

json-parse- even- better- errors (日语) (英语)

json-parse-even-better-errors 是一个节点js 库,用于调出更好的错误 JSON.parse(), (中文(简体) ), 包括分析错误的背景和位置.

它还保留了JSON数据的新线和缩进样式,由 将它们放入对象或阵列中 Symbol.for('indent') 财务报告和审定财务报表 Symbol.for('newline') 属性.

安装

$ npm install --save json-parse-even-better-errors

目录

示例

const parseJson = require('json-parse-even-better-errors')

parseJson('"foo"') // returns the string 'foo'
parseJson('garbage') // more useful error message
parseJson.noExceptions('garbage') // returns undefined

特征

  • 像JSON.parse, 但错误是更好的.
  • 脱去一个主字节顺序标记,您有时会读取文件 .
  • 有个 noExceptions 返回未定义而不是投掷的方法.
  • 将新行字符附加到 Symbol.for('newline') 在对象和阵列上.
  • 附加缩进字符 Symbol.for('indent') 在对象和阵列上.

缩进

要保存文件保存回磁盘时的缩进, 使用 data[Symbol.for('indent')] 作为第三个参数 JSON.stringify,以及 如果您想要保存窗口 \r\n 新行,替换 \n 字符输入 字符串为 data[Symbol.for('newline')]。 。 。 .

例如:

const txt = await readFile('./package.json', 'utf8')
const data = parseJsonEvenBetterErrors(txt)
const indent = Symbol.for('indent')
const newline = Symbol.for('newline')
// .. do some stuff to the data ..
const string = JSON.stringify(data, null, data[indent]) + '\n'
const eolFixed = data[newline] === '\n' ? string
  : string.replace(/\n/g, data[newline])
await writeFile('./package.json', eolFixed)

缩进是通过查看初始值之间的空白来决定的 { 财务报告和审定财务报表 [ 以及随之而来的角色。 如果你有很多怪事的话 不一致的缩进, 然后它不会跟踪 或给你任何方式 留着它。 这是错误还是特性可争论;)

API 密码

parse(txt, reviver = null, context = 20)

就是这样 JSON.parse,但将包含一些更多信息,当 发生错误,并附加 Symbol.for('indent') 财务报告和审定财务报表 Symbol.for('newline') 在对象和阵列上。 丢出一个 JSONParseError。 。 。 .

parse.noExceptions(txt, reviver = null)

就是这样 JSON.parse,但会回来 undefined 而不是说 丢出一个错误.

class JSONParseError(er, text, context = 20, caller = null)

扩展 Java 脚本 SyntaxError 分类以解析消息并提供 更好的元数据.

传入内置出的错误 JSON.parse,文本为 解析,它会分析出 需要帮助的比特.

context 默认为 20.

设置 a caller 功能将内部执行细节从 堆栈跟踪。 打电话时 parseJson,这个设定为 parseJson 函数。 如果不设定,则构造者会自行默认,因此 堆栈跟踪将指向您调用的地方 new JSONParseError。 。 。 .

版本与发布记录

json-parse-even-better-errors 共发布 12 个版本,首次发布于 2019/09/28;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
6.0.0latest2026/05/095 个月前
5.0.02025/10/221 年前
4.0.02024/09/052 年前
3.0.22024/05/042 年前
3.0.12023/11/282 年前
3.0.02022/10/114 年前

关于 json-parse-even-better-errors 的常见问题

json-parse-even-better-errors 是什么?

JSON.parse 有错误的上下文信息

如何安装 json-parse-even-better-errors?

在项目目录运行 npm install json-parse-even-better-errors,或使用 pnpm add / yarn add / bun add。

json-parse-even-better-errors 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/json-parse-even-better-errors 是否存在。

json-parse-even-better-errors 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

json-parse-even-better-errors 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.22.2 || ^24.15.0 || >=26.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

json-parse-even-better-errors 可以商用吗?

json-parse-even-better-errors 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

json-parse-even-better-errors 的下载量有多少?

根据 npm 官方下载统计,json-parse-even-better-errors 在 2026/10/05 – 2026/11/03 这 30 天内被下载 457,991,348 次,日均约 15,266,378 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

json-parse-even-better-errors 还在维护吗?

最新版本 6.0.0 发布于 2026/05/09(5 个月前);至今共发布 12 个版本,其中过去 12 个月发布了 1 个;首次发布于 2019/09/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。