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

时间:2017-10-20 09:11:34

标签: json parsing yarnpkg

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

  

错误发生意外错误:":位于333和#34;的JSON中的意外标记}。

我如何找出这是什么行/列号?

3 个答案:

答案 0 :(得分:1)

在Vim中,您可以键入:goto 94来获得第94个字符,位于位置94的前面。但是,如果文件中包含多字节字符,则这种方法似乎无法正常工作。

答案 1 :(得分:0)

jsonlint

您可以将文本复制/粘贴到jsonlint,或在本地安装:

npm -g install jsonlint

然后查看文件中的位置:

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

答案 2 :(得分:0)

使用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