我目前正在上Node.JS课程,我们正在使用fs.writeFileSync()通过终端读取,写入,保存和编辑用户的输入数据。对于只有几句话长的文本,它仍然可以正常工作,但是对于更大的文本,节点终端(>)会开始运行,而不是运行代码。
我对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);
Viveks-MacBook-Pro:游乐场Vivek $节点JSON.js'Lorem Ipsum' 'ldfdfefnhebfhbfhrbfherbfhrbfhrefocalStorage fefef fede'
对象
{“ title”:“ Lorem Ipsum“,” body“:” ldfdfefnhebfhbfhrbfherbfhrbfhrefocalStorage fefef 联邦调查局”}
Viveks-MacBook-Pro:游乐场Vivek $节点JSON.js'Lorem Ipsum''Lorem Ipsum只是印刷和排版行业的伪文本。 自从Lorem Ipsum成为行业标准伪文本以来, 1500年代,当一台未知的打印机拿起一个厨房并将其打乱时 制作类型标本。它不仅存活了五个世纪, 以及电子排版的飞跃 不变。它在1960年代随着 包含Lorem Ipsum段落的Letraset床单 使用Aldus PageMaker等桌面发布软件,包括 Lorem Ipsum的版本”
'>'
答案 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');
希望这会有所帮助!