Node.js报错:Route.get()需回调函数却获[object Undefined]求助
错误排查:Route.get() requires a callback function but got a [object Undefined]
运行app.js时抛出错误:Route.get() requires a callback function but got a [object Undefined],正在跟随freeCodeCamp的《4个Node.js项目》教程开发任务管理应用,相关代码如下:
app.js
const express = require('express') const app = express() const tasks = require('./routes/tasks') app.use(express.json()) // routes app.get('/hello',(req,res) => { res.send('task manager app') }) app.use('/api/v1/tasks',tasks) const port = 3000 app.listen(port,console.log(`Server is listening on port ${port}...`))
routes/tasks.js
const express = require('express') const router = express.Router() const { getAllTasks, createTask, getTask, updateTask, deleteTask, } = require('../controllers/tasks') router.route('/').get(getAllTasks).post(createTask) router.route('/:id').get(getTask).patch(updateTask).delete(deleteTask) module.exports = router
controllers/tasks.js
const getAllTasks = (req,res)=> { res.send('all items') } const createTask = (req,res) => { res.send('create task') } const getTask = (req,res) => { res.send('get single task') } const updateTask = (req,res) => { res.send('update task') } const deleteTask = (req,res) => { res.send('delete task') } module.export = { getAllTasks, createTask, getTask, updateTask, deleteTask, }
错误原因
问题出在controllers/tasks.js的导出语句上,你写的是module.export,正确的Node.js模块导出语法是module.exports(末尾多一个s)。由于导出语法错误,routes/tasks.js中导入的所有控制器函数都为undefined,Express路由无法获取有效的回调函数,因此抛出该错误。
修复方案
将controllers/tasks.js中的module.export修改为module.exports,修正后的代码如下:
const getAllTasks = (req,res)=> { res.send('all items') } const createTask = (req,res) => { res.send('create task') } const getTask = (req,res) => { res.send('get single task') } const updateTask = (req,res) => { res.send('update task') } const deleteTask = (req,res) => { res.send('delete task') } module.exports = { getAllTasks, createTask, getTask, updateTask, deleteTask, }
内容的提问来源于stack exchange,提问作者Manish Yadav
相关产品推荐
相关产品推荐

