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

Fastify框架Node.js项目Linux部署报TypeError转换对象错误

问题定位

  • 报错直接触发点:你调用res.headers()时未传入任何参数。你使用的Fastify版本在Linux环境下无参调用headers()方法会返回undefined,后续Fastify内部逻辑执行Object.keys()读取header配置时,就会触发「无法将undefined或null转换为对象」的报错。
  • 为什么本地Windows正常、查看源码找不到Function.keys调用:你本地Windows安装的Fastify版本和Linux服务器上安装的版本不一致。npm安装依赖时如果没有锁版本,跨平台安装可能拉到不同小版本的代码,对应headers()方法的默认返回逻辑有差异,旧版本的Fastify的reply.js文件中确实存在Object.keys处理传入header参数的逻辑。
  • 为什么try catch没捕获到异常:send()方法的执行是异步的,你加的try catch只捕获了同步代码逻辑的异常,未捕获异步阶段抛出的错误。

解决方法

  1. 修正业务代码
    无需额外设置响应头的情况下,直接删除headers()调用即可:
res.status(200).send({ "key": "value" })

如果需要保留headers()调用,主动传入空对象作为参数:

res.status(200).headers({}).send({ "key": "value" })
  1. 避免后续出现同类环境差异问题
    在项目根目录执行npm shrinkwrap生成依赖版本锁文件,后续所有环境部署都会安装完全相同版本的依赖,消除版本差异带来的兼容问题。

验证

修改代码后重新部署,调用接口验证返回状态正常,服务端无报错即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:36:03