ReactJs 和 D3.js :未捕获(承诺中) SyntaxError: Unexpected token < in JSON at position 0 at responseJson

Posted

技术标签:

【中文标题】ReactJs 和 D3.js :未捕获(承诺中) SyntaxError: Unexpected token < in JSON at position 0 at responseJson【英文标题】:ReactJs and D3.js : Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 at responseJson 【发布时间】:2018-09-27 13:52:20 【问题描述】:

在我的 App.js 中,

import React,  Component  from 'react';
import * as d3 from "d3";
import * as d3queue from 'd3-queue';
import * as topojson from 'topojson';

var usState = require("./us-states.json");
var usCounty = require("./us-counties.json");

var imageModule=new ImageModule(imageOpts);
var queue = d3queue.queue();

var path = d3.geoPath().projection(projection);

class App extends Component 

  constructor() 
  super();
  this.drawDoc = this.drawDoc.bind(this);
  

  drawState()
    queue.defer(d3.csv, './data.csv', function (d) 
            return 
                id: +(d.state + d.county),
                state: d.state,
                county: d.county,
                unemployment: +d.unemployment
            
        )
        .defer(d3.json, usState)
        .defer(d3.json, usCounty)
        .awaitAll(this.initializeIt)
  

  initializeIt(error, results) 
      if (error)  throw error 
      var data = results[0]



单击按钮时,我正在调用 drawState 方法。但我收到此错误“未捕获(承诺)SyntaxError:意外的令牌

【问题讨论】:

该错误表示文件未正确加载。您的文件之一的路径无效。我的猜测是 ./data.csv。如果您打开开发人员工具并转到源选项卡,找到 data.csv 并选择它,我敢打赌它是空的,因为它实际上并没有加载。 @KyleRichardson ,是的,它没有加载。我不知道为什么它没有被加载,它在同一个目录中。 你在使用 react-router 吗?如果是这样,请确保您的文档头中有一个base 标记......那个我以前得到过。 您有任何解决方案吗?因为我现在面临同样的问题。 【参考方案1】:

好的,我遇到了同样的问题,现在我解决了。

你应该把你的 json 文件放在公共目录中:

【讨论】:

以上是关于ReactJs 和 D3.js :未捕获(承诺中) SyntaxError: Unexpected token < in JSON at position 0 at responseJson的主要内容,如果未能解决你的问题,请参考以下文章

D3.js:“未捕获的语法错误:意外的令牌非法”?

Youtube API未捕获(在承诺中)错误:请求失败,状态码为403

ReactJS + Redux + Reduc-thunk 无法调度承诺

未捕获错误:未知类型:d3.js v5.4.0中的dragend

验证授权和未授权用户 (JWT ReactJS-Laravel)

承诺解决后未触发reactjs render() this.setState 被重新分配