Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js “奇怪”;RangeError:超过最大调用堆栈大小;_Node.js_Mongodb - Fatal编程技术网

Node.js “奇怪”;RangeError:超过最大调用堆栈大小;

Node.js “奇怪”;RangeError:超过最大调用堆栈大小;,node.js,mongodb,Node.js,Mongodb,所以,在node上玩,我想我会写一个直截了当的新闻代码,放在我非常简约的node页面上,看起来很有趣。问题是,我一直在 RangeError: Maximum call stack size exceeded 但我一辈子都搞不清楚错误发生在哪里。 抛出的是一些额外的调试注释,甚至删除了几乎每个文件的部分,但归根结底都是一样的。如果我启动应用程序,它就可以毫无问题地监听端口3000。如果我试图访问它,我会收到上面的错误消息。 下面是app.js代码 var express = require(

所以,在node上玩,我想我会写一个直截了当的新闻代码,放在我非常简约的node页面上,看起来很有趣。问题是,我一直在

RangeError: Maximum call stack size exceeded 
但我一辈子都搞不清楚错误发生在哪里。 抛出的是一些额外的调试注释,甚至删除了几乎每个文件的部分,但归根结底都是一样的。如果我启动应用程序,它就可以毫无问题地监听端口3000。如果我试图访问它,我会收到上面的错误消息。 下面是app.js代码

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path')
  , stylus = require('stylus')
  , nib = require('nib')
  , mongo = require('mongodb')
  , logger = require('express-logger')
  , bodyParser = require('body-parser')
  , methodOverride = require('express-method-override')
  , errorhandler = require('errorhandler')
  , monk = require('monk');






var app = express();

//Is this specifically for nib and stylus to work
function compile(str, path) {
    return stylus(str)
    .set('filename', path)
    .use(nib())
    }
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
//app.use(express.favicon());
//app.use(express.logger('dev'));
//app.use(express.bodyParser());
//app.use(express.methodOverride());
app.use(app.router);
app.use(stylus.middleware(
   { src: __dirname + '/public'
       , compile: compile
   }
));
app.use(express.static(path.join(__dirname, 'public')));

//development only
//if ('development' === app.get('env')) {
//app.use(express.errorHandler());
//}

//Lets do some stuff to get info from the database

var db = monk('localhost:27017/meetallnews');
var router = express.Router();
//Make our db accessible to our router
app.use(function(req,res,next){
 req.db = db;
 next();
});
app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});
另外,routes/index.js

console.log('Called index.routes');
var express = require('express');
var router = express.Router();
exports.index = function(req, res){
    console.log('render page');
  res.render('index', { title: 'Meet All' });
};

//This is to read from the database
router.get('/userlist', function(req, res) {
    console.log('Called database');
    var db = req.db;
    var collection = db.get('sitenews');
    collection.find({},{},function(e,docs){
        res.render('newslist', {
            "newslist" : docs
        });
    });
});

欢迎任何建议,即使是从哪里开始寻找。我删除了上面的整个route.get部分,但仍然得到了相同(或相同)的错误。试图从jade文件中删除内容,直到只剩下标题行,仍然显示相同的错误消息。而且总是在服务器到达app.js的末尾之后(说服务器在端口3000上)

非常感谢卢卡斯·齐菲泽和波马克斯先生

事实证明,错误消息有点误导,让我认为这是某种永恒的循环或数据库中的一些奇怪的东西

这是因为我是一个可怕的小偷,从某个地方偷了一些路由代码,并且没有删除行
app.use(app.router)同时具有
routes=require('./routes')


删除后,我得到了一个全新的错误,我知道它来自何处,它是什么(与此问题无关,只是证明必须测试未经测试的编码。

1.您使用的是哪个版本的express?您使用的是路由器,它是express4功能,但同时您有
app.use(app.router)
此版本中已弃用的应用程序。2.请求哪个url会导致错误3.是否有任何包含错误的堆栈跟踪?4.您能否提供仍会导致错误的最小版本的应用程序(没有您所说的已删除的所有内容)的源代码?堆栈跟踪将非常庞大,但5)您是否尝试过将res.render(…)替换为一个普通的
res.json({})
,这样之前发生的事情就无关紧要了,然后注释掉之前的所有代码,逐个取消注释,直到达到无限递归?因为这样你就会知道是什么导致了这个错误。