2015-04-21 3 views
1

Я новичок Node.js, и я пытаюсь прочитать json-файл, но когда я запускаю «npm start» в терминале, я получаю эту ошибку:Невозможно разобрать JSON в Node.js

undefined:3462 

SyntaxError: Unexpected end of input 
    at Object.parse (native) 
    at /Users/alonbond/node_apps/analoc_2/analoc/routes/index.js:15:20 
    at fs.js:334:14 
    at FSReqWrap.oncomplete (fs.js:95:15) 

это index.js:

var express = require('express'); 
var fs = require('fs'); 
var app = express.Router(); 

/* GET home page. */ 
app.get('/', function(req, res, next) { 
    console.log('Welcome to Express.js'); 
    res.render('index', { title: 'Express' }); 
}); 

/* GET json */ 
app.get('/analoc/', function(req, res) { 

    fs.readFile('./sample_data.json', function(error, data){ 
     jsonObj = JSON.parse(data); 
     res.send('THE DATA: ', jsonObj); 
    }); 

}); 

module.exports = app; 
+1

может быть, вы можете попробовать/тест, если у вас есть действительный JSON первый здесь http://jsonlint.com/ он дает лучшее сообщение об ошибке, если у вас есть недопустимый json – Hokutosei

+0

. Вы также должны объявить свои переменные (jsonObj) и поместить проверочный файл console.log(). – enguerranws

+2

Проверьте, установлена ​​ли 'ошибка' ... – robertklep

ответ

2

Ваш код отлично работает для меня. Ваш JSON-файл должен быть каким-то образом ошибочным.

Вот это пример использования кода:

недействителен JSON:

{ 
    "test_data": 2 
    bla 
} 

дает ошибку

Example app listening at http://:::3000 
undefined:3 
     bla 
     ^
SyntaxError: Unexpected token b 
    at Object.parse (native) 
    at /tmp/node_help/index.js:15:32 
    at fs.js:334:14 
    at FSReqWrap.oncomplete (fs.js:95:15) 

Ошибка вы получаете Unexpected end of input нормально, когда отсутствуют фигурные скобки или скобки в ваш файл JSON.

Вот инвалид sample_data.json (отсутствует фигурная скобка в конце):

{ 
    "test_data": 2 

, который дает ошибку

SyntaxError: Unexpected end of input 
    at Object.parse (native) 
    at /tmp/node_help/index.js:15:32 
    at fs.js:334:14 
    at FSReqWrap.oncomplete (fs.js:95:15) 
+0

Спасибо! по-видимому, в моем конце json-файлов отсутствовала скобка. –

Смежные вопросы