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

TypeError: registrationRules不是函数 项目启动报错求助

问题分析与解决方案

错误信息

TypeError: registrationRules is not a function at Object.<anonymous> (C:\Users\fenrir\Desktop\chat-app\chat-backend\router\auth.js:8:4) at Module._compile (node:internal/modules/cjs/loader:1083:30) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1112:10) at Module.load (node:internal/modules/cjs/loader:948:32) at Function.Module._load (node:internal/modules/cjs/loader:789:14) at Module.require (node:internal/modules/cjs/loader:972:19) at require (node:internal/modules/cjs/helpers:88:18) at Object.<anonymous> (C:\Users\fenrir\Desktop\chat-app\chat-backend\router\index.js:7:17) at Module._compile (node:internal/modules/cjs/loader:1083:30) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1112:10) Program node index.js exited with code 1

相关代码

auth.js

const router = require('express').Router()
const { login, register } = require('../controllers/authController')
const { validate } = require('../validators')
const { rules: registrationRules } = require('../validators/auth/register')

router.post('/login', login)

router.post('/register', [
    registrationRules(),
    validate
], register)

module.exports = router

register.js

const {body} = require('express-validator')

exports.rules = () => {
    return [
        body('firstName').notEmpty(),
        body('lastName').notEmpty(),
        body('gender').notEmpty(),
        body('email').isEmail(),
        body('password').isLength({ min: 5})
    ]
}

问题分析

报错核心是registrationRules is not a function,说明在auth.js中调用registrationRules()时,该变量并非可执行函数。可能的原因:

  • 文件路径引用错误,导致导入的不是目标register.js文件
  • Node模块缓存问题,旧的导出内容未更新
  • register.js存在语法错误,导致函数导出失败

解决方案

  1. 验证文件路径
    确认项目结构与auth.js中的导入路径匹配:

    chat-backend/
    ├── router/
    │   └── auth.js
    └── validators/
        └── auth/
            └── register.js
    

    如果register.js的实际位置不符,修正require('../validators/auth/register')中的路径。

  2. 清除模块缓存并重启服务
    停止Node服务,删除项目根目录下的node_modules/.cache目录(若存在),重新启动服务,避免缓存导致的导入异常。

  3. 调试与语法检查

    • 在auth.js中添加调试代码,查看registrationRules的类型:
      const { rules: registrationRules } = require('../validators/auth/register')
      console.log(typeof registrationRules) // 正常应输出'function'
      
    • 检查register.js的语法,确认箭头函数() => {...}写法正确,无拼写错误(如误写为->)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:42:40