Node.js应用程序提供ERR_EMPTY_RESPONSE

时间:2015-06-18 14:03:31

标签: javascript node.js mongodb npm

我正在使用Node.js,Express,MongoDB和Mongoose构建的应用程序存在严重问题。昨晚,当我使用nodemon server.js来运行服务器时,一切似乎都有效。在命令行上,一切似乎都在工作,但在浏览器(特别是Chrome)上我收到以下错误:没有数据收到ERR_EMPTY_RESPONSE。我在我的机器上尝试过其他Node项目,他们也在努力工作。我昨晚做了一个npm更新,以便更新我的模块,因为我从MongoDB / Mongoose获得了另一个错误{[错误:无法找到模块'../build/Release/bson']代码:'MODULE_NOT_FOUND'}。我使用了这个answer中的解决方案来尝试修复它并且它不起作用,我仍然得到了这个错误。现在我没有将任何文件提供给我的浏览器。我的代码如下。请帮忙:

//grab express and Mongoose
var express = require('express');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

//create an express app
var app = express();

app.use(express.static('/public/css', {"root": __dirname}));

//create a database
mongoose.connect('mongodb://localhost/__dirname');

//connect to the data store on the set up the database
var db = mongoose.connection;

//Create a model which connects to the schema and entries collection in the __dirname database
var Entry = mongoose.model("Entry", new Schema({date: 'date', link: 'string'}), "entries");

mongoose.connection.on("open", function() {
    console.log("mongodb is connected!");
});

//start the server on the port 8080
app.listen(8080);

//The routes

//The route for getting data for the database
app.get("/database", function(req, res) {
    Entry.find({}, function(err, data) {console.log(err, data, data.length); });

});

//The route for posting data on the database
app.post("/database", function(req, res) {
    //test new post
    var newMonth = new Entry({date: '1997-10-30', link: 'https://wwww.youtube.com/'});
        newMonth.save(function(err) {
            if (err !== null) {
                //object was not save
                console.log(err);
                    } else {
                console.log("it was saved!")
        };
    });
});



//create an express route for the home page at http://localhost:8080/
app.get('/', function(req, res) {
    res.send('ok');
    res.sendFile('/views/index.html', {"root": __dirname + ''});
});

//Send a message to the console
console.log('The server has started');

2 个答案:

答案 0 :(得分:4)

//The route for getting data for the database
app.get("/database", function(req, res) {
    Entry.find({}, function(err, data) {console.log(err, data, data.length); });

});

//The route for posting data on the database
app.post("/database", function(req, res) {
    //test new post
    var newMonth = new Entry({date: '1997-10-30', link: 'https://wwww.youtube.com/'});
        newMonth.save(function(err) {
            if (err !== null) {
                //object was not save
                console.log(err);
                    } else {
                console.log("it was saved!")
        };
    });
});

这些路线不会通过res向客户发送任何内容。 bson错误并不重要 - 它只是告诉你它不能使用C ++ bson解析器而是使用原生JS解析器。

修复可能是:

//The route for getting data for the database
app.get("/database", function(req, res) {
    Entry.find({}, function(err, data) {
        if (err) { 
            res.status(404).json({"error":"not found","err":err});
            return;
        }
        res.json(data);
    });
});

//The route for posting data on the database
app.post("/database", function(req, res) {
    //test new post
    var newMonth = new Entry({date: '1997-10-30', link: 'https://wwww.youtube.com/'});
    newMonth.save(function(err) {
        if (err !== null) {
            res.status(500).json({ error: "save failed", err: err});
            return;
        } else {
            res.status(201).json(newMonth);
        };
    });
});

答案 1 :(得分:0)

更新于2020年6月

ERR_EMPTY_RESPONSE表达js

package.json

 "cors": "^2.8.4",
    "csurf": "^1.9.0",
    "express": "^4.15.4",

当您尝试使用错误的HTTP请求访问时显示此错误。首先检查您的请求是否正确
也许您的cors参数错误