节点服务器响应错误:process.nextTick(function(){throw err;});

时间:2016-03-10 00:52:42

标签: javascript json node.js express

所以我有一个非常简单的应用程序,我正在构建使用Mongo,Express和Node进行练习。

我收到错误process.nextTick(function(){throw err;});

当我在GET请求期间尝试在成功条件中使用res.json(docs)时,似乎发生了错误。但是,我可以console.log(docs)并查看JSON。

开发环境

  • Windows 7 64位
  • Mongo 3.2
  • 节点5.6

的package.json:

...
  "dependencies": {
    "body-parser": "^1.15.0",
    "express": "^4.13.4",
    "mongojs": "^2.3.0"
  }
...

app.js(api):

var express = require('express');
var app = express();
var mongojs = require('mongojs');
var db = mongojs('catalog', ['products']);

app.get('/', function(req,res){
  res.send('It works, indeed'); // this is working
});

app.get('/products', function(req,res){
  res.send('Products Works'); // this is displaying correctly on the page
  console.log('Fetching products');
  db.products.find(function(err,docs){
    if(err){
      res.send(err);
    }
    else{
      console.log('Sending Products');
      console.log('response docs', docs); // returns the correct JSON
      res.json('stuff sent'); // Throws error
    }
  });
});

app.listen(3000);
console.log('Server is running on port 3000');

我不确定为什么这会失败。我能够控制日志记录JSON,因此知道数据存在并且在响应中可用。只是不确定为什么res.json(docs)不起作用。

1 个答案:

答案 0 :(得分:1)

您正在调用隐式回调两次

res.send('Products Works'); // this is displaying correctly on the page

res.json(docs);

删除(可能是第一个)