Javascript 需要JSON文件时JSON输入意外结束
使用fs.writeFile时,我创建了一个JSON文件,如下所示:Javascript 需要JSON文件时JSON输入意外结束,javascript,express,ecmascript-6,Javascript,Express,Ecmascript 6,使用fs.writeFile时,我创建了一个JSON文件,如下所示: [{"schoolname":"Scottsdale","StudentFirst":"john","StudentLast":"smith","grade":"2","email":"john@smith.com","ParentLast":"Smith","ParentFirst":"John"}] 除非在我需要同一个文件时,我立即得到错误: Unexpected end in JSON input 我以前也做过同样的
[{"schoolname":"Scottsdale","StudentFirst":"john","StudentLast":"smith","grade":"2","email":"john@smith.com","ParentLast":"Smith","ParentFirst":"John"}]
除非在我需要同一个文件时,我立即得到错误:
Unexpected end in JSON input
我以前也做过同样的事情,但是使用了更大的数据,而且似乎效果很好
await fs.writeFile(`./${fileName}.json`,
JSON.stringify(result.recordsets[0]), function(err) {
if(err) {
return console.log(err)
}
})
const file = require(`./${fileName}.json`)
预期的结果应该返回上面的JSON,这样我就可以得到文件的副本并遍历它 该错误是由于需要空JSON文件而导致的。JSON文件为空,因为
fs.writeFile
是异步的,并且您未正确使用wait
wait
wait
,而不能使用回调fs.writeFileSync
fs.writeFileSync(
`./${fileName}.json`,
JSON.stringify(result.recordsets[0])
)
const file = require(`./${fileName}.json`)
选项2:将fs.writeFile
包装在承诺中
(async () => {
await new Promise((resolve, reject) => {
fs.writeFile(
`./${fileName}.json`,
JSON.stringify(result.recordsets[0]),
function(err) {
if (err) {
reject()
return console.log(err)
}
resolve()
}
)
});
const file = require(`./${fileName}.json`)
})();
听起来你应该验证JSON。你不能等待基于回调的函数。谢谢你,这很有意义!