【问题标题】:Node.js unexpected token RNode.js 意外令牌 R
【发布时间】:2014-02-11 03:51:40
【问题描述】:

我从终端收到此错误:

SyntaxError: Unexpected token R
at Object.parse (native)
at Client.exports.json [as parse]   (/Users/terrychen/Desktop/Git/ControlPanel/node_modules/hippie/lib/hippie/parsers.js:15:18)
at Request._callback (/Users/terrychen/Desktop/Git/ControlPanel/node_modules/hippie/lib/hippie/client.js:388:10)
at Request.self.callback (/Users/terrychen/Desktop/Git/ControlPanel/node_modules/hippie/node_modules/request/request.js:129:22)
at Request.EventEmitter.emit (events.js:98:17)
at Request.<anonymous> (/Users/terrychen/Desktop/Git/ControlPanel/node_modules/hippie/node_modules/request/request.js:873:14)
at Request.EventEmitter.emit (events.js:117:20)
at IncomingMessage.<anonymous> (/Users/terrychen/Desktop/Git/ControlPanel/node_modules/hippie/node_modules/request/request.js:824:12)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16

虽然我只是在执行一个带有嬉皮 API 测试模块的简单脚本:

var hippie = require('hippie');

hippie()
.json().get('https://api.github.com/users/vesln')
.expectStatus(200)
.end(function(err, res, body) {
  if (err) throw err;
});

知道为什么会这样吗?感谢您的回答!

【问题讨论】:

  • 或许你可以教我如何调试这种类型的错误,那也太棒了!

标签: node.js api debugging testing


【解决方案1】:

这里的问题是,嬉皮士有时会期望 API 返回 JSON 以进行解析。您可能手动检查了该 URL,发现它是 JSON。但这种类型的错误表明JSON.parse 输入错误。通常在传入undefined 时,您会看到unexpected token u。 我进行调试的第一步是将console.log(arguments) 放在if(err.. 之前,而实际上只对res 对象的内容感兴趣,它表明GitHub 实际上在这里返回了一个错误。

{
...,
body: 'Request forbidden by administrative rules. Please make sure your request has a User-Agent header (http://developer.github.com/v3/#user-agent-required). Check https://developer.github.com for other possible causes.' }
}

这是意外令牌的 R,这不是有效的 JSON。正如消息所述,缺少 User-Agent 标头是最可能的原因。

此代码有效。

var hippie = require('hippie');

hippie()
.header("user-agent", "derpbot")
.json().get('https://api.github.com/users/vesln')
.expectStatus(200)
.end(function(err, res, body) {
  if (err) throw err;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2012-09-21
    • 2019-08-07
    • 2018-11-10
    • 2013-12-24
    相关资源
    最近更新 更多