Node.js 应用程序提供 ERR_EMPTY_RESPONSE

Posted

技术标签:

【中文标题】Node.js 应用程序提供 ERR_EMPTY_RESPONSE【英文标题】:Node.js app giving ERR_EMPTY_RESPONSE 【发布时间】:2015-09-04 05:21:57 【问题描述】:

我在使用 Node.js、Express、MongoDB 和 Mongoose 构建的应用程序时遇到了严重问题。昨晚,当我使用nodemon server.js 运行服务器时,一切似乎都正常了。在命令行上一切似乎都在工作,但在浏览器(特别是 Chrome)上,我收到以下错误:没有收到数据 ERR_EMPTY_RESPONSE。我已经在我的机器上尝试了其他 Node 项目,它们也都在努力工作。我昨晚做了一个 npm update 来更新我的模块,因为我从 MongoDB/Mongoose [Error: Cannot find module '../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');

【问题讨论】:

【参考方案1】:
//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);
        ;
    );
);

【讨论】:

我觉得自己像个白痴。我删除了我所有的历史记录。一天中的大部分时间都进行了病毒扫描。谢啦。这帮助很大。 您能否也说说为什么 Node/Express 不提供项目中的静态文件(在公共文件夹中)。 也许app.use('/public/css', express.static(__dirname)); 是你想要的——我不熟悉你叫它的方式。【参考方案2】:

2020 年 6 月更新

ERR_EMPTY_RESPONSE express js

package.json

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

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

【讨论】:

以上是关于Node.js 应用程序提供 ERR_EMPTY_RESPONSE的主要内容,如果未能解决你的问题,请参考以下文章

将 PHP 会话与 Vue/Node.js 集成

Node.js Path 模块

Node.js_1.1

Node.js是什么?提供了哪些内容?

启动 node.js express 服务器作为服务

学习用Node.js和Elasticsearch构建搜索引擎