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存在语法错误,导致函数导出失败
解决方案
验证文件路径
确认项目结构与auth.js中的导入路径匹配:chat-backend/ ├── router/ │ └── auth.js └── validators/ └── auth/ └── register.js如果register.js的实际位置不符,修正
require('../validators/auth/register')中的路径。清除模块缓存并重启服务
停止Node服务,删除项目根目录下的node_modules/.cache目录(若存在),重新启动服务,避免缓存导致的导入异常。调试与语法检查
- 在auth.js中添加调试代码,查看registrationRules的类型:
const { rules: registrationRules } = require('../validators/auth/register') console.log(typeof registrationRules) // 正常应输出'function' - 检查register.js的语法,确认箭头函数
() => {...}写法正确,无拼写错误(如误写为->)。
- 在auth.js中添加调试代码,查看registrationRules的类型:
内容的提问来源于stack exchange,提问作者Yarik
相关产品推荐
相关产品推荐

