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

NodeJS使用fs.writeFile报错:Callback必须为函数,求解决

问题解决:TypeError [ERR_INVALID_CALLBACK]

错误原因分析

你遇到的错误来自两个核心问题:

  1. fs.writeFile参数缺失:该API的正确调用格式是fs.writeFile(文件名, 要写入的内容[, 选项], 回调函数),你漏传了第二个参数(要写入文件的内容),导致原本的回调被当成了写入内容,真正的回调参数变成undefined,触发了「回调必须是函数」的错误。
  2. 回调参数顺序错误:Node.js异步API遵循错误优先回调规范,回调的第一个参数永远是错误对象(成功时为null),不存在所谓的succ参数,你搞反了参数顺序。

修正后的代码

假设root实例可以通过this.toString()获取要写入的SVG字符串,修正后的write函数如下:

write(fileName, cb) {
  // 获取要写入文件的内容,比如root对应的SVG字符串
  const content = this.toString();
  fs.writeFile(fileName, content, function(err) {
    if (err) {
      cb(err);
    } else {
      // 成功时传入null表示无错误,符合Node回调规范
      cb(null);
    }
  });
}

或者用更简洁的箭头函数写法:

write(fileName, cb) {
  const content = this.toString();
  fs.writeFile(fileName, content, (err) => cb(err));
}

补充说明

测试代码root.write('test.svg', () => console.log('done writing!'))是正确的,它传入了文件名和回调函数。修正后的write方法会把root对应的内容写入文件,成功后触发回调打印done writing!。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:20:34