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

Node.js报TypeError: fs.createWriteStream is not a function

错误原因

导入模块路径错误。
fs/promises 是fs模块拆分出的、仅包含Promise风格异步文件操作API的子集,只提供readFile、writeFile、mkdir这类返回Promise的方法,完全不包含流相关、同步操作类的API。你调用的createWriteStream属于流API,只挂载在主fs模块的导出对象上,自然会在fs/promises导出的对象上找不到这个方法,抛出类型错误。
之前网上搜到的“浏览器环境调用fs”的场景和你这个完全不相关,你的问题就是导错了模块路径。

修复方法

根据编码习惯二选一即可:

  • 方式1:分开导入主模块和promises子模块(语义最清晰,推荐)
    流相关、同步方法从主fs模块取,Promise风格方法从fs/promises取:
    import fs from 'fs'
    import fsp from 'fs/promises'
    
    // 调用createWriteStream走主模块
    const ws = fs.createWriteStream("example.png")
    
    // 要用Promise版API时走fsp即可,比如 await fsp.readFile('a.txt')
    
  • 方式2:直接从主fs模块取promises属性
    主fs模块本身就挂载了promises属性,和单独导入fs/promises拿到的对象完全一致,不需要额外导子路径:
    import fs from 'fs'
    const fsp = fs.promises
    
    const ws = fs.createWriteStream("example.png")
    

补充验证:你可以直接在Node环境执行console.log(Object.keys(await import('fs/promises')))打印fs/promises的所有导出方法,能看到里面确实没有createWriteStream、createReadStream、writeFileSync这类非Promise风格的API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:15:43