D3.json Неожиданный токен с Node.js Server - PullRequest
0 голосов
/ 27 января 2019

пытаясь выучить D3, я написал следующий локальный сервер:

const http = require('http');
const fs = require('fs'); 

function onRequest(request, response) {
    response.writeHead(200, {'Content-Type': 'text/html'});
    fs.readFile('./index.html', null, function(error, data) {
        if (error) {
            response.writeHead(404);
            // response.write('file not found');
        } else {
            response.write(data);
        }
        response.end();
    });

}

http.createServer(onRequest).listen(8000, '127.0.0.1');

Затем я перехожу к http://127.0.0.1:8000/, чтобы отобразить этот index.html:

<html>
<body>
<script src="https://d3js.org/d3.v5.min.js"></script>
<script>

    var stringit = `[{"coin_val": 4999999,"coin_lab": "#PAX"},{"coin_val": 1100000,"coin_lab": "#USDC"}]`;

    console.log('working.')

    d3.json('./data.json', function(err, data) {
        console.log(err)
        console.log(data)
    });
</script>

</body>
</html>

, ноЯ получаю следующую ошибку в консоли Chrome:

Uncaught (в обещании) SyntaxError: Неожиданный токен <в JSON на позиции 1 в Go (d3.v5.min.js: 2) Go @ d3.v5.min.js: 2 </p>

Что я делаю не так?это 3D код или я просто не правильно понял сервер?как я могу заставить D3 читать файл JSON на сервере Node.js.

Я подозреваю, что проблема не в JSON, что-то идет не так на стороне сервера и неправильно читает HTML-код?

1 Ответ

0 голосов
/ 27 января 2019

Я написал следующий локальный сервер

, который обслуживает содержимое index.html в ответ на любой запрос, который он получает.

d3.json('./data.json',

Итак, ваш JavaScript запрашивает data.json и получает содержимое index.html.

Поскольку содержимое index.html не является JSON, и начинается с < выдает сообщение об ошибке.Файл JSON не может начинаться с <.

. Вам нужно исправить сервер, чтобы он давал браузеру то, что он запрашивает, вместо слепой отправки index.html.

.
...