TypeError: Object #<ServerResponse> has no method 'send'

TypeError: Object #<ServerResponse> has no method 'send'

我一直在开发一个 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;

app-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() 方法仍然可以正常工作。

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

为了解决这个问题,我最终通过 npm install 重新安装了 Express,它解决了这个问题。我猜我在重构过程中碰到了一个文件,但没有意识到。