json input node.js意外结束

h6my8fg2  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(334)

我有一个奇怪的错误,因为它只有在json.stringify之后运行json.parse时才会出现。

const fs = require('fs');

const proj = {
  name: "karl",
  age: 22,
  alone: true
};
var json = JSON.stringify(proj);
 fs.writeFile('test.json', json, function(err, result) {
  if (err) console.log('error', err);
});
//error

const rawdata = fs.readFileSync('test.json','utf8');
let student = JSON.parse(rawdata);
console.log(student);
student.name = 'hugo';
 json = JSON.stringify(student);
fs.writeFile('test.json', json, function(err, result) {
  if (err) console.log('error', err);
});

当我这样做的时候,我就犯了那个错误。但如果我把这两部分分开做,比如:

const fs = require('fs');

const proj = {
  name: "karl",
  age: 22,
  alone: true
};
var json = JSON.stringify(proj);
 fs.writeFile('test.json', json, function(err, result) {
  if (err) console.log('error', err);
});

const fs = require('fs');

const rawdata = fs.readFileSync('test.json','utf8');
let student = JSON.parse(rawdata);

console.log(student);
student.name = 'hugo';
 json = JSON.stringify(student);
fs.writeFile('test.json', json, function(err, result) {
  if (err) console.log('error', err);
});

我得到了正常的输出。我犯了什么错?

5jdjgkvh

5jdjgkvh1#

任用 fs.writeFileSync() 第一次写入文件时,或将读取文件的代码移动到回调函数中。

onst fs = require('fs');

const proj = {
  name: "karl",
  age: 22,
  alone: true
};
var json = JSON.stringify(proj);
fs.writeFile('test.json', json, function(err, result) {
  if (err) {
    console.log('error', err);
    return;
  }
  const rawdata = fs.readFileSync('test.json', 'utf8');
  let student = JSON.parse(rawdata);
  console.log(student);
  student.name = 'hugo';
  json = JSON.stringify(student);
  fs.writeFile('test.json', json, function(err, result) {
    if (err) console.log('error', err);
  });
});

相关问题