错误:Route.get()似乎无法通过

时间:2018-10-06 10:53:30

标签: node.js mongoose

在尝试运行我的应用时,请继续获取此错误。知识水平不高的人尝试了许多在线解决方案来解决此问题,但没有任何事情使我起床并运行。这是错误-

ExpandableTextView  expandableTextView1 = (ExpandableTextView) findViewById(R.id.expandable_text_view);
        expandableTextView1.setText(getString(R.string.text1));

        ExpandableTextView  expandableTextView2 = (ExpandableTextView) findViewById(R.id.expandable_text_view2);
        expandableTextView2.setText(getString(R.string.text2));

index.js

    Error: Route.get() requires a callback function but got a [object Undefined]
    at Route.(anonymous function) [as get] (d:\dev_portal\bit_racer_real\alpha_bit_racer\node_modules\express\lib\router\route.js:202:15)

catalog.js

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


    router.get('/', function(req, res) {
    res.redirect('/catalog');
    });

    module.exports = router;

app.js

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

 // Require controller modules.

var horse_controller = require('../controllers/horseController');

router.get('/', horse_controller.index);


module.exports = router;

不确定我哪里出错了,我还听说我可能会在express的路由index.js文件中打过电话。该呼叫不存在。我花了几个小时仔细检查代码,以进行小的更改,试图清除这个简单的错误:(

其他任何人都遇到过此问题。我很想得到一个明确的答案。

4 个答案:

答案 0 :(得分:2)

据我所知,您的index.js文件位于horsecontroller目录中。

但是,当您将CommonJS的{​​{1}}与目录而不是文件一起使用时,它将自动默认为require,因此您不必指定{{1} } ../path/to/directory/index.js函数中,只需指定horse_controller.index

最终代码如下:

app.get

答案 1 :(得分:1)

就像达克什说的那样,在<script type="text/javascript"> function SelectAll(Id) { //get reference of GridView control var Grid = document.getElementById("<%= GridView1.ClientID %>"); //variable to contain the cell of the Grid var cell; if (Grid.rows.length > 0) { //loop starts from 1. rows[0] points to the header. for (i = 1; i < grid.rows.length; i++) { //get the reference of first column cell = grid.rows[i].cells[0]; //loop according to the number of childNodes in the cell for (j = 0; j < cell.childNodes.length; j++) { //if childNode type is CheckBox if (cell.childNodes[j].type == "checkbox") { //Assign the Status of the Select All checkbox to the cell checkbox within the Grid cell.childNodes[j].checked = document.getElementById(Id).checked; } } } } } </script> 行(文件catalog.js文件)中,router.get('/', horse_controller.index);不是函数。

答案 2 :(得分:1)

在您的catalog.js中,您需要您的控制器,例如require('../controllers/horseController'),这意味着您拥有horseController.js文件或horseController是目录,并且其中有一个{{1} }文件。要求它后,将其保存在index.js变量中,并在将其注册为请求处理程序时指定horse_controller

假设您已经在horse_controller.index中导出了这样的对象

horseController

但是,如果不是这种情况,为什么会出现该错误

  

错误:Route.get()需要回调函数,但是得到了[object Undefined]

此代码表示您具有更高的权限,无法导出module.export = { index: function(request, response) { // Your code goes here } } 文件或../controllers/horseController文件中的任何内容

如果../controllers/horseController/index.js目录下的index.js文件可以像这样将horseController变量作为请求处理程序直接传递给horse_controller

app.get

直接传递它是因为您在app.get('/', horse_controller); 文件中直接导出了 Express Router

答案 3 :(得分:0)

我解决了这个问题。

我从控制器.js文件中缺少.index函数。

添加了这一行

exports.index = function(req, res) { res.send('NOT IMPLEMENTED: Site Home Page'); };

现在.index不再寻找对象。

感谢您的帮助,感谢您的答复。 :)