Чтение файла и запись файла JSON - PullRequest
0 голосов
/ 27 января 2020

В этом я пытаюсь создать счетчик посещений, при котором каждый раз, когда кто-то посещает мой сайт, переменная будет считываться из просмотров. json файл 1 добавляется к номеру, а затем json будет обновляться. с новым номером. Однако, когда я тестировал его в проекте repl.it, у меня была ошибка:

ReferenceError: writeFileSync is not defined
    at /home/runner/hit-counter/index.js:6:1
    at Script.runInContext (vm.js:133:20)
    at Object.<anonymous> (/run_dir/interp.js:156:20)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)

Я не знаю, что это значит, если вы знаете, скажите, пожалуйста, и как я могу это исправить.

ссылка на проект ответа: https://hit-counter.cohense.repl.run/

JavaScript (ES6)

const fs = require('fs');
let views = fs.readFileSync('views.json');
views = JSON.parse(views);
views.total++;
let data = JSON.stringify(views, null, 2);
writeFileSync("views.json", data, finished);
function finished(err) {
  if (views = JSON.parse(views)) {
  console.log("Your view has been accounted for!")
} else {
  console.error("Error occured please reload the page =(")
}
};

JSON

{
   "totalViews": 1
}

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Я узнал, что я сделал неправильно, я не использовал fs.

writeFileSync("views.json", data, finished);

Когда мне просто нужно было сделать

fs.writeFileSync("views.json", data[,finished]);
0 голосов
/ 27 января 2020

Вы можете сделать так, просто исправили некоторые ошибки.

О, вы должны использовать writeFileSyn c, чтобы избежать одновременного редактирования файла.

Вопрос в том, почему вы не используете БД? Это намного быстрее и исправляет параллельные записи.

var fs = require('fs')
var data = fs.readFileSync('views.json')
var views = JSON.parse(data);
console.log(views);

views.total = views.total + 1;

var data = JSON.stringify(views, null, 2)
writeFileSync("views.json", data, ()=>{
 console.log("Your View Has Been Accounted For!")
})
...