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

写入大字符串至文件时遇TypeError: fs.writeFilSync未定义错误求助

问题分析与解决方案

嘿,你的问题其实很好解决,我帮你拆解一下:

1. 核心错误:低级拼写失误

错误日志里的TypeError: fs.writeFilSync is not a function已经把问题点明了——你把writeFileSync拼写成了writeFilSync,少了一个字母e!这是直接导致报错的元凶。

2. 额外需要调整的细节

除了拼写错误,代码里还有两个小问题需要修正:

  • 你引入的是fs.promises,但writeFileSync是原生fs模块的同步方法,并不在fs.promises对象中;
  • 代码里的console.log("Done writing:", result);中的result变量根本没定义,执行到这里会触发新的报错。

修复后的代码方案

我给你两种可选的修复方案,你可以根据自己的代码风格选择:

方案一:继续使用同步写入(修正拼写+调整fs引入)

如果想保留同步写法,需要直接引入原生fs模块,而非promises版本:

const csv = require("csvtojson");
var jsonexport = require('jsonexport');
const fs = require("fs"); // 改为引入原生fs模块
const saveJsonToCSV = jsonObj => {
  jsonexport(jsonObj, function (err, csv) {
    if (err) return console.log(err);
    console.log("Length", csv.length);
    var path = appDir + "\\csv\\" +"test.csv";
    try {
      fs.writeFileSync(path, csv); // 修正拼写错误
      console.log("Done writing:", path); // 把未定义的result换成实际的path
    } catch (error) {
      console.error(error);
    }
  });
  return false;
}

方案二:改用异步写入(适配fs.promises风格)

如果想遵循现代异步/Promise的写法,可以把整个逻辑改成async/await风格,让代码更整洁:

const csv = require("csvtojson");
const jsonexport = require('jsonexport');
const fs = require("fs").promises;
const saveJsonToCSV = async (jsonObj) => { // 标记为async函数
  try {
    const csvContent = await jsonexport(jsonObj); // 用await获取csv内容
    console.log("Length", csvContent.length);
    const path = `${appDir}\\csv\\test.csv`; // 用模板字符串简化路径拼接
    await fs.writeFile(path, csvContent); // 异步写入文件
    console.log("Done writing:", path);
  } catch (error) {
    console.error(error);
  }
  return false;
}

关于空文件的原因

当你调用了不存在的writeFilSync函数时,代码直接进入catch块,此时文件系统可能已经提前创建了空文件(部分写入操作会先初始化空文件再写入内容),但实际内容并没有被写入,所以最终得到的是空文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:46:56