我一直在研究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()
方法仍然可以正常工作。
我完全被这一个难住了。任何帮助将不胜感激。
答案 0 :(得分:1)
要解决此问题,我最终只是通过npm install
重新安装Express,并解决了问题。我猜我在重构期间遇到了一个文件并且没有意识到它。