javascript - 中间件无法连接 HTTP 服务器

标签 javascript node.js express connect

我正在阅读 Professional Node.js,我正在尝试了解连接 HTTP 中间件框架。我创建了一个简单的中间件,它返回一个用自定义测试字符串回复的函数:

function replyText(text) {
  return function(req, res) {
    res.end(text);
  };
}

module.exports = replyText;

但是当我尝试在连接服务器中使用这个中间件时。 Node 给我一个错误:

/Users/socomo22/work/hello_world_app_v2.js:8
var app = connect.createServer(replyText('Hello World!'));
                  ^
TypeError: undefined is not a function

但是当我简单地使用时:

var app = connect();
app.listen(8080)

它运行没有给出任何错误。我不明白我是否犯了语法错误。我将如何使用这个简单的中间件?这是我的连接服务器文件:

var connect = require('connect');

// middlewares
var replyText = require('./reply_text');

var app = connect();

var app = connect.createServer(replyText('Hello World!'));
app.listen(8080, function() {
  console.log('listening on 8080 port')
});

最佳答案

正如 documentation 所指出的使用 use API 来安装中间件和 http 模块来创建服务器实例,尽管您可以按指示通过连接创建实例 here .

正如@FranciscoPresencia 所指出的,在您需要本地模块时添加 .js 扩展名是可选的。

var replyText = require('./reply_text.js');

所以你的代码应该是这样的,我测试了它。按预期工作

var connect = require('connect')
var http = require('http')
var app = connect();

// middlewares
var replyText = require('./reply_text.js');
app.use(replyText('Hello World!'));

http.createServer(app).listen(8080, function() {
  console.log('listening on 8080 port')
});

注意:尽量避免将 8080、80 等端口作为可能被其他应用程序使用的保留端口。这有时可能会导致 Node 失败。


添加输出截图供您引用

enter image description here

关于javascript - 中间件无法连接 HTTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34877319/

相关文章:

javascript - 一段时间后,socket io 开始在我的原始聊天室上发布两次内容

node.js - Express.js 版本 4 中 req.url 和 req.originalUrl 的区别

javascript - 线路以奇怪的顺序运行

javascript - 本地主机连接被 Express 服务器拒绝

javascript - React - 使用内联重要样式

javascript - 动态命名变量javascript

javascript - 使用自定义代码将 Chartjs 更新到 2.5

javascript - 什么是 `process.binding(' fs' )` in ` fs.js`?

javascript - 在字符串上调用 toString

javascript - $window.sessionStorage 用于登录和注销(基于 token );