将JSON.parse()位置转换成行号和列

Convert JSON.parse() position into line number and column

如果我的 package.json 有错误,我会在 运行 yarn 时看到以下内容:

error An unexpected error occurred: ": Unexpected token } in JSON at position 333".

如何计算出这是第几行/列号?

jsonlint

您可以将文本 copy/paste 转换为 jsonlint,或者在本地安装相同的内容:

npm -g install jsonlint

然后查看文件中的位置:

$ jsonlint package.json
Error: Parse error on line 18:
...er": "^2.3.0"  }}}
--------------------^
Expecting 'EOF', got '}'

使用 npm 并且您的文件名为 package.json

yarn 不同,npm 会打印出 package.json 错误的上下文。

它不像 jsonlint 的输出那么简洁,但它不需要额外的包。

使用 npm install--dry-run 实际上什么都不做:

$ npm i --dry-run
npm ERR! file /home/ravi/repo/erc20/pet-shop-tut/package.json
npm ERR! code EJSONPARSE
npm ERR! Failed to parse json
npm ERR! Unexpected token '}' at 18:2
npm ERR! }}
npm ERR!  ^
npm ERR! File: /home/ravi/repo/erc20/pet-shop-tut/package.json
npm ERR! Failed to parse package.json data.
npm ERR! package.json must be actual JSON, not just JavaScript.
npm ERR! 
npm ERR! Tell the package author to fix their package.json file. JSON.parse

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/ravi/.cache/npm/_logs/2017-10-20T09_07_12_967Z-debug.log

在 Vim 中,您可以键入 :goto 94 以到达第 94 个字符,就在位置 94 的前面。但是,如果您的文件包含多字节字符,这似乎效果不佳.