You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JavaScript对象写入JSON文件?导入模块报错求解

解决JSON文件写入问题的两种场景方案

你现在的核心问题是搞混了浏览器和Node.js的运行环境:fetch是浏览器端用来请求网络资源的API,而fs是Node.js专属的文件系统模块,两边的API不能混用,这才导致你导入模块时各种报错。


场景1:在浏览器环境中运行代码

浏览器出于安全限制,不允许直接读写本地文件,只能通过生成下载链接让用户手动保存的方式实现类似效果:

// 把对象转为JSON文件并触发下载
function saveAsJsonFile(obj, fileName = 'output.json') {
  // 将对象转为格式化的JSON字符串
  const jsonContent = JSON.stringify(obj, null, 2);
  // 创建Blob对象存储JSON内容
  const blob = new Blob([jsonContent], { type: 'application/json' });
  // 创建临时下载链接
  const downloadUrl = URL.createObjectURL(blob);
  // 创建a标签触发下载
  const link = document.createElement('a');
  link.href = downloadUrl;
  link.download = fileName;
  document.body.appendChild(link);
  link.click();
  // 清理临时资源
  document.body.removeChild(link);
  URL.revokeObjectURL(downloadUrl);
}

// 使用示例
const myData = { name: "张三", age: 25, hobbies: ["看书", "跑步"] };
saveAsJsonFile(myData);

场景2:在Node.js环境中运行代码

如果你的代码是在Node.js里跑的,那之前用fetch读本地文件是错误的,应该用Node.js的fs模块,同时解决模块导入问题:

方式1:使用CommonJS模块(无需修改配置)

直接用require导入fs的promise版本(异步操作更友好):

const fs = require('fs').promises;

// 异步写入JSON文件
async function writeJsonFile(obj, filePath = './output.json') {
  try {
    const jsonContent = JSON.stringify(obj, null, 2);
    await fs.writeFile(filePath, jsonContent, 'utf8');
    console.log('JSON文件写入成功');
  } catch (error) {
    console.error('写入失败:', error);
  }
}

// 使用示例
const myData = { name: "张三", age: 25, hobbies: ["看书", "跑步"] };
writeJsonFile(myData);

方式2:使用ES模块(需修改package.json)

在项目的package.json中添加"type": "module",然后用import导入:

// package.json中添加这一行
{
  "type": "module"
}

然后编写代码:

import { writeFile } from 'fs/promises';

// 异步写入JSON文件
async function writeJsonFile(obj, filePath = './output.json') {
  try {
    const jsonContent = JSON.stringify(obj, null, 2);
    await writeFile(filePath, jsonContent, 'utf8');
    console.log('JSON文件写入成功');
  } catch (error) {
    console.error('写入失败:', error);
  }
}

// 使用示例
const myData = { name: "张三", age: 25, hobbies: ["看书", "跑步"] };
writeJsonFile(myData);

内容的提问来源于stack exchange,提问作者NewBieJavaPro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:31:07