我正在学习做TODO应用程序。在网站上,我学习的是https://coderwall.com/p/4gzjqw/build-a-javascript-todo-app-with-express-jade-and-mongodb
我按照说明打字,
app.js
var main = require('./routes/main');
var todo = require('./routes/todo');
var todoRouter = express.Router();
app.use('/todos', todoRouter);
app.get('/', main.index);
todoRouter.get('/',todo.all);
todoRouter.post('/create', todo.create);
todoRouter.post('/destroy/:id', todo.destroy);
todoRouter.post('/edit/:id', todo.edit);
/routes/todo.js
module.exports ={
all: function(req, res){
res.send('All todos');
},
viewOne: function(req, res){
console.log('Viewing '+req.params.id);
},
create: function(req, res){
console.log('Todo created');
},
destroy: function(req, res){
console.log('Todo deleted');
},
edit: function(req, res){
console.log('Todo '+req.params.id+' updated');
}
};
我收到了这个错误信息
错误:Route.get()需要回调函数,但获得了[未定义的对象]
我是不是错过了什么?
6条答案
按热度按时间9vw9lbht1#
我也犯了同样的错误。调试后,我发现我错误地拼写了从控制器导入到路径文件中的方法名称。请检查方法名称。
zsbz8rwp2#
在本教程中,
todo.all
返回callback
对象。这是router.get
语法所必需的。从文档中:
router.METHOD(路径,[回调,...]回调)
Router.METHOD()方法在Express中提供路由功能,其中方法是HTTP方法之一,如GET、PUT、POST等,小写。因此,实际的方法是router.get()、router.post()、router.put()等等。
您仍然需要在
todo
文件中定义callback
对象的数组,以便可以访问router
的适当callback
对象。您可以从教程中看到,
todo.js
包含callback
对象的数组(这是您在编写todo.all
时要访问的对象):ovfsdjhp3#
GET有两条路径:
route.get
没有获得回调函数时引发此异常。正如您在todo.js文件中定义的todo.all,但它无法找到main.index。这就是为什么在本教程后面定义main.index文件后,它就可以工作了。ulmd4ohb4#
确保
您的文件.js:
火柴
App.js
对我来说,我在复制粘贴一个模块到另一个模块进行测试时遇到了这个问题,需要更改导出。文件顶部的xxxx
vaj7vani5#
有时你会错过底线。添加此路由器将理解这一点。
mwg9r5ms6#
发生在我身上的情况是,我正在导出一个函数,如下所示:
但我是这样称呼它的:
取而代之的是