TypeError:对象#<serverresponse>没有方法&#39;发送&#39; </serverresponse>

时间:2015-02-03 23:58:30

标签: javascript node.js express

我一直在研究Express应用程序,我刚刚开始收到一个非常奇怪的错误TypeError: Object #<ServerResponse> has no method 'send'。它开始时我试图通过Express提供的路由器为我的应用程序设置一些路由。我做了一些谷歌搜索,发现其他获得TypeError: Object #<ServerResponse> has no method __(填空)的人要么不使用Express,要么他们正在做一些奇怪的路由器。因此,我创建了一个名为app-test.js的新应用程序文件,并删除了所有无关的代码,包括路由器。但是,我仍然遇到同样的错误。现在这是我的设置,当我试图找出问题时:

server.js

var app = require("./app-test");

app.set("port", process.env.PORT || 8000);

var server = app.listen(app.get("port"), function () {

var host = server.address().address;
var port = server.address().port;

console.log("Example app listening at http://%s:%s", host, port)
});

module.exports.app = app;
module.exports.server = server;

应用-test.js

var express = require('express'),
app = express(),
path = require('path');

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.get('/testing', function(req, res) {
    res.send('Hello World!');
});

module.exports = app;

我知道Express构建在Node.js的http的ServerResponse对象上。因此,即使未设置Express,某些方法(如.end())仍然有效。但是,关于这个问题真的很奇怪的是Express的.render()方法仍然可以正常工作。

我完全被这一个难住了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

要解决此问题,我最终只是通过npm install重新安装Express,并解决了问题。我猜我在重构期间遇到了一个文件并且没有意识到它。