首页 > 解决方案 > 不允许未经身份验证的请求。SyntaxError:位置 0 处 JSON 中的意外标记 U

问题描述

我是使用 Nodejs 的 Js 初学者。下面是这样的代码:

const express = require('express');
    const bodyParser = require('body-parser');
    const request = require('request');

    const app = express();

    app.use(bodyParser.urlencoded({extended: true}));

    app.get("/", (req, res, next) => {
    res.sendFile(__dirname + "/index.html");
    });

    app.post("/", (req, res, next) =>{
    try {
    var crypto = req.body.crypto;
    var fiat = req.body.fiat;
    var baseURL = "https://apiv2.bitcoinaverage.com/indices/global/ticker/all?crypto=crypto&fiat=fiat";
    var finalURL = baseURL + crypto + fiat;

    request(finalURL, (error, response, body) => {
    var data = JSON.parse(body);
    var price = data.last;
    res.send("<h1>The current price of " + crypto + " is " + price + fiat + "</h1>");
    });

    } catch (err) {
    console.log(err);
    }
    });

但它向我发送了这样的错误,我不是无法理解它。

undefined:1 不允许未经身份验证的请求。在https://pro.bitcoinaverage.com购买新计划或开始免费试用 ^

SyntaxError: Unexpected token U in JSON at position 0
at JSON.parse (<anonymous>)
at Request._callback (F:\ProgProb\WebDep\Bitcoin-Ticker\index.js:38:20)
at Request.self.callback (F:\ProgProb\WebDep\Bitcoin-Ticker\node_modules\request\request.js:185:22)
at Request.emit (events.js:311:20)
at Request.<anonymous> (F:\ProgProb\WebDep\Bitcoin-Ticker\node_modules\request\request.js:1154:10)
at Request.emit (events.js:311:20)
at IncomingMessage.<anonymous> (F:\ProgProb\WebDep\Bitcoin-Ticker\node_modules\request\request.js:1076:12)
at Object.onceWrapper (events.js:417:28)
at IncomingMessage.emit (events.js:323:22)
at endReadableNT (_stream_readable.js:1204:12)

标签: javascriptnode.jsbashfunctionapi

解决方案


//try to declare baseURL like this:

var baseURL="https://apiv2.bitcoinaverage.com/indices/global/ticker/";
//--------------------------------------------------------------------
//this code worked for me:
//--------------------------------------------------------
const express = require("express");
const bodyParser = require("body-parser");
const request = require("request");

const app = express();

app.use(bodyParser.urlencoded({extended:true}));

app.get("/",function(req,res){
  res.sendFile(__dirname + "/index.html");
});

app.post("/",function(req,res){

try{
  var crypto = req.body.crypto;
  var fiat = req.body.fiat;
  var baseURL = "https://apiv2.bitcoinaverage.com/indices/global/ticker/";
  var finalURL = baseURL + crypto + fiat;


request(finalURL,function(error,response,body){
  var data = JSON.parse(body);
  var price = data.last;
  res.send("<h1>The current price of " + crypto + " is " + price + fiat + "</h1>");
});
}catch(err){
  console.log(err);
}
});

app.listen(3000,function(){
  console.log('server is running on port 3000');
});

推荐阅读