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

Node.js使用routing-controller报Reflect.getMetadata is not a function错误求解

错误原因

routing-controller框架依赖TypeScript装饰器的元数据反射能力,Reflect.getMetadata不属于Node.js/ECMAScript原生API,缺少对应的polyfill就会触发该报错。

修复步骤
  • 第一步:安装reflect-metadata依赖
    # npm安装
    npm install reflect-metadata
    # yarn安装
    yarn add reflect-metadata
    # pnpm安装
    pnpm add reflect-metadata
    
  • 第二步:在项目入口文件最顶部引入polyfill,必须保证这行代码在所有其他业务代码、框架引入代码之前执行,示例(入口为app.ts时):
    // 必须是第一行有效代码
    import 'reflect-metadata'
    // 再引入其他模块
    import { createExpressServer } from 'routing-controllers'
    
  • 第三步:检查tsconfig.json配置,确保开启装饰器和元数据生成开关:
    {
      "compilerOptions": {
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true
      }
    }
    
常见踩坑说明

如果完成以上步骤依然报错,检查是否存在reflect-metadata引入顺序晚于routing-controller引入的情况,只要有任意文件在导入reflect-metadata之前导入了routing-controller相关代码,都会触发该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:42:04