Неожиданный токен u в JSON в позиции 0 - при разборе строковых данных JSON из файла на веб-сервере
Я записал данные Json в файл, используя JSON.stringify(data)
, но когда я читаю из файла, используя JSON.parse(data)
Я получаю сообщение об ошибке Неожиданный токен в JSON at position 0
, Это печатает Undefined
когда я печатаю data
function read(req, res) {
reader.on('data', function (chunk) {
response += chunk;
});
reader.on('end', function () {
console.log(response);
})
reader.on('error', function (err) {
console.log(err.stack);
});
}
app.get('/index.html', function (req, res) {
res.sendFile(__dirname + "/" + "index.html");
})
app.get('/process_get', function (req, res) {
read(req, res);
console.log(response);
res.end(JSON.parse(response)); // Here is the error - reading from file
})
Содержание в файле - outputs.txt
{"first_name":"Kumar","last_name":"Roul"}
Код для маршрутизации из Интернета в файл -
function write(req, res) {
response = {
first_name: req.body.first_name,
last_name: req.body.last_name
};
writer.write(JSON.stringify(response));
}
app.post('/process_post', urlencodedParser, function (req, res) {
write(req, res);
console.log(response);
res.end('Successfully written to file');
})
1 ответ
Вы пытаетесь разобрать файл, прежде чем закончите читать. Поскольку чтение содержимого происходит асинхронно, выполнение продолжается. Это означает response
является undefined
во время звонка JSON.parse
, который требует строку и, следовательно, выдает исключение, так как он не получает его.
Ваш read
Функция должна сигнализировать о завершении чтения, либо вызывая обратный вызов (делая подпись read(req, res, callback)
) или возвращая обещание. Тогда ваш маршрут должен выполнить любую обработку содержимого файла в обратном вызове или обещании .then()
,