节点fs.writeFileSync错误

时间:2018-06-20 10:15:40

标签: json node.js

我目前正在上Node.JS课程,我们正在使用fs.writeFileSync()通过终端读取,写入,保存和编辑用户的输入数据。对于只有几句话长的文本,它仍然可以正常工作,但是对于更大的文本,节点终端(>)会开始运行,而不是运行代码。 Image1 Image2

我对node.js有基本的了解,但无法弄清楚为什么这种情况一直在发生。 任何帮助都非常感谢。谢谢。

下面的代码

const fs = require('fs');

var originalNote = {
    title: process.argv[2],
    body: process.argv[3],
};

var originalNoteString = JSON.stringify(originalNote);

fs.writeFileSync('Notes.json', originalNoteString);

var noteString = fs.readFileSync('Notes.json');

var Note = JSON.parse(noteString);

console.log(typeof (Note));
console.log(originalNoteString);
console.log(Note.title);
  • 端子输出1-
  

Viveks-MacBook-Pro:游乐场Vivek $节点JSON.js'Lorem Ipsum'   'ldfdfefnhebfhbfhrbfherbfhrbfhrefocalStorage fefef fede'

     

对象

     

{“ title”:“ Lorem   Ipsum“,” body“:” ldfdfefnhebfhbfhrbfherbfhrbfhrefocalStorage fefef   联邦调查局”}

  • 端子输出2-
  

Viveks-MacBook-Pro:游乐场Vivek $节点JSON.js'Lorem Ipsum''Lorem   Ipsum只是印刷和排版行业的伪文本。   自从Lorem Ipsum成为行业标准伪文本以来,   1500年代,当一台未知的打印机拿起一个厨房并将其打乱时   制作类型标本。它不仅存活了五个世纪,   以及电子排版的飞跃   不变。它在1960年代随着   包含Lorem Ipsum段落的Letraset床单   使用Aldus PageMaker等桌面发布软件,包括   Lorem Ipsum的版本”

'>'

2 个答案:

答案 0 :(得分:0)

基本问题在于第二个参数中发送的数据。

如果查看数据,则其中包含industry's的单词single quote

这导致第二个参数被截断。

如果将第二个参数放在双引号中,则代码应该可以正常工作。

如果可能,还可以使用转义符来忽略数据中的单引号。

我希望这会有所帮助:)

答案 1 :(得分:-1)

直接使用require调用“ notes.json”,而不是将其读取为文件。

var noteString = require('Notes.json');

如果您的json格式正确,则可以直接使用它。如果您坚持要通过readFileSync调用文件,请使用'utf-8'作为附加参数。

var noteString = fs.readFileSync('Notes.json','utf-8');

希望这会有所帮助!