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

搭建Express.js服务器遇TypeError:Cannot read properties of undefined (reading 'push')

Express.js TypeError: Cannot read properties of undefined (reading 'push') 解决方法

错误信息:

/home/runner/log-in-API/node_modules/express/lib/router/index.js:513
  this.stack.push(layer);
             ^

TypeError: Cannot read properties of undefined (reading 'push')
    at Function.route (/home/runner/log-in-API/node_modules/express/lib/router/index.js:513:14)
    at file:///home/runner/log-in-API/api/reviews.route.js:4:8
    at ModuleJob.run (node:internal/modules/esm/module_job:198:25)
    at async Promise.all (index 0)
    at async ESMLoader.import (node:internal/modules/esm/loader:385:24)

核心问题

问题出在api/reviews.route.js文件中:你将express.Router当作属性直接赋值,但它是一个构造方法,必须调用它(添加())才能生成有效的路由实例。

错误代码

import express from 'express'
const router = express.Router

router.route('/').get((req, res) => {
  res.send('Hello world')
})

export default router

修正后代码

import express from 'express'
// 调用Router方法生成路由实例
const router = express.Router()

router.route('/').get((req, res) => {
  res.send('Hello world')
})

export default router

补充说明

  • 直接赋值express.Router时,router变量指向的是方法本身而非实例化的路由对象,调用router.route('/')时内部无法找到this.stack属性,因此抛出该错误。
  • 另外你的index.js中注释了ReviewsDAO的导入语句,但代码里仍在调用await ReviewsDAO.injectDB(client),后续启用DAO功能时记得取消注释导入,否则会触发新的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:10:42