在Render.com部署@fastify/static时出现Node.js核心模块fs缺失错误
问题原因与解决方案
核心原因
你遇到的Cannot find module 'node:fs'错误,本质是Render.com上运行的Node.js版本过低,不支持node:前缀的核心模块导入语法(该语法从Node.js 14.13.0版本开始才被支持)。
从错误日志里的internal/modules/cjs/loader.js:888可以推断,Render当前使用的Node.js版本大概率是12.x或更早——这类旧版本无法识别node:fs这种写法,只能识别传统的require('fs')。而你引入的@fastify/send(@fastify/static的依赖)内部使用了node:fs的导入方式,导致运行时报错。
解决步骤
方法1:通过.nvmrc文件指定Node版本
在项目根目录创建一个.nvmrc文件,内容填入你本地开发使用的Node.js LTS版本(比如v18.17.0):
v18.17.0
提交该文件到代码仓库后重新部署,Render会自动读取.nvmrc并使用对应的Node版本。
方法2:在Render控制台手动设置Node版本
- 进入你的Render服务页面,点击左侧的Environment选项
- 在Environment Variables区域,添加一个新的环境变量:
- 变量名:
NODE_VERSION - 变量值:填入你需要的Node版本(比如
18.17.0)
- 变量名:
- 保存后重新部署服务
验证
部署完成后,你可以在Render的启动日志里查看Node版本,确认是否已经切换到指定的高版本。
内容的提问来源于stack exchange,提问作者kelly
相关产品推荐
相关产品推荐

