javascript - 将数据存储到文件时发生错误 SyntaxError: JSON 输入意外结束
问题描述
我需要有关此错误的帮助:
Error occured while storing data to file SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at storeDataToFile (C:\Users\alaiy\Documents\NFTs\nft-demo-master\scripts\ipfsHelper.js:19:23)
at async pinFileToIPFS (C:\Users\alaiy\Documents\NFTs\nft-demo-master\scripts\pinFileToIPFS.js:29:5)
Successfully added IPFS response to json file
我正在使用以下脚本将图像上传到 IPFS 站点(Pinata),然后将 IPFS 哈希添加到新的/现有的 json 文件中。任何帮助表示赞赏!
我有我的 dev.json 文件,它基本上说要将哈希添加到 ipfsHash.json 文件中。如果没有,则创建一个并添加:
{
"ipfsFile": {
"location": "../data/ipfsHash.json"
}
}
我有我的 runScript.js 文件,它基本上调用了下面的 pinFiletoIPFS 文件:
const path = require('path');
const pinFileToIPFS = require('./pinFileToIPFS');
const filePath = path.join(__dirname, '../assets/homer.jpg');
// const filePath = path.join(__dirname, '../data/metadata.json');
pinFileToIPFS(filePath);
这是有问题的脚本。我有 ipfsHelp.js 文件,它应该将数据添加到我的 json 文件中:
const fs = require('fs').promises;
const path = require('path');
const config = require('config');
// https://stackoverflow.com/questions/36856232/write-add-data-in-json-file-using-node-js
// Accepts json data and stores in specified filePath.
// If the file does not exists in specified location, it creates it
const storeDataToFile = async (jsonData) => {
try {
const filePath = path.join(__dirname, config.get('ipfsFile.location'));
const ipfsFileExists = await fileExists(filePath);
if (!ipfsFileExists) {
console.log('ipfsFileExists: ', ipfsFileExists);
// First time creating an empty file with [].
// We will be storing all ipfsHashes as array of objects
await fs.writeFile(filePath, JSON.stringify([]));
}
const data = await fs.readFile(filePath, 'utf8');
const json = JSON.parse(data);
json.push(jsonData);
await fs.writeFile(filePath, JSON.stringify(json));
} catch (err) {
console.log('Error occured while storing data to file', err);
}
};
async function fileExists(path) {
try {
const res = await fs.access(path);
return true;
} catch (err) {
// no such file or directory. File really does not exist
if (err.code == 'ENOENT') {
return false;
}
console.log('Exception fs.statSync (' + path + '): ' + err);
// some other exception occurred
throw err;
}
}
module.exports = {
storeDataToFile,
fileExists,
};
我用过这个模块:https ://www.npmjs.com/package/config
我的根文件夹中有一个配置文件夹,其中包含 json 文件。
不知道我做错了什么。
编辑:
由于为什么 process.env.NODE_ENV 未定义,我找到了解决方案?
该代码无法正常工作,因为我必须在 cmd 中键入以下内容,以在环境中设置变量!:
SET NODE_ENV=dev
解决方案
推荐阅读
- java - 如何在 Java 中为可选继承建模
- html - 我试图在引导程序中将两列并排放置,但它们一直在堆叠。建议?
- haskell - 为什么泛型函数进程列表以一种特殊的方式出现?
- javascript - Promise.all() 是顺序运行还是并行运行?
- nuget - Nuget 还原忽略 .xml 文件,但仅下载 .dll 和 .pdb 文件
- python - 在回调之间共享数据帧
- javascript - 从多个组件传播道具
- groovy-eclipse - 作为 Groovy 脚本运行
- sql - SQL Server:如何在存储过程中使用游标执行查询以及如何将参数列表传递给存储过程
- c++ - Future 和 Promise 机制使用