首页 > 解决方案 > 我想做基本的快速路由。但它返回 -> 错误:Route.get() 需要一个回调函数但得到一个 [object Undefined]

问题描述

动机:基本的快递路线。由于一个目录中有很多文件,我希望这个目录路径由变量处理。但是另一个文件处理得很少。所以当我编码路径时,它只需要文件名。这将使编码变得容易。

让我们看看我的主文件 app.js 位于“./”上,这里我编码:

var next = require('./routes');
app.get('/', next.index);

路径由变量 next 处理。我也有文件 index.js 位于“./routes”,这里我编码:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;

它没有响应,而是将错误返回为 ->

Error: Route.get() requires a callback function but got a [object Undefined]

但是当我从 app.js 替换下一个变量时:

var next = require('./routes/index');
app.get('/', next);

这行得通。那么我需要在哪里改变呢?

标签: javascriptnode.jsexpress

解决方案


此代码会导致错误,因为当您使用 require 时,它​​会自动要求该目录的 index.js 文件。所以这两行代码是一样的。

var next = require('./routes');
var next = require('./routes/index');

因此,当您执行此代码时,它将导致错误,因为 next.index 不存在。

var next = require('./routes');
app.get('/', next.index); // This will cause an error

正确的方法是:

var next = require('./routes');
app.get('/', next);

推荐阅读