gpt4 book ai didi

javascript - 如何在层之间传递 http 服务器变量,而不是将其用作 node.js 中不同文件中的 require 语句?

转载 作者:IT老高 更新时间:2023-10-28 23:03:26 25 4
gpt4 key购买 nike

我已经创建了一个 nodeJS 应用程序,它需要创建一个可以正常工作的服务器,在文件 server.js 中如下所示:

http.createServer(app).listen(app.get('port'), function (err) {
if (err) {
console.error(err);
} else {
runProcess();
console.log('Server listening on port ' + app.get('port'));
}
});

现在我需要将此服务器传递给某个文件,并且我的应用程序构建如下:

server.js 
app.js
routes.js
action.js

所以我按照下面的方法快速完成了,有更好的方法吗?

这是修改后的server.js:

var server = http.createServer(app);
app.setServer(server);
server.createServer(app).listen(app.get('port'), function (err) {
if (err) {
console.error(err);
} else {
runProcess();
console.log('Server listening on port ' + app.get('port'));
}
});

app.js 我有路由器文件,我确实喜欢以下内容:

app.use('/', routes.router, function (req, res, next) {
next();
});

app.setServer = function(http) {
routes.setServer(http);
}

module.exports = app;

这段代码我放在 router.js 文件中:

module.exports = {
router: applicationRouters,
setServer: function(http) {
//here I set server to the file action.js
action.setServer(http);
}
}

而在 Action js中,我做了以下操作:

module.exports = {
setServer: function(http) {
...

我需要在层之间传递http,而不是在不同的文件/模块中使用它。我如何在 node.js 中做到这一点?

最佳答案

您不需要将服务器传递给路由。只需在创建服务器之前包含它们:

someroute.js

var router = require("express").Router();
router.use('/', routes.router, function (req, res) {
return res.json();
});

module.exports = router;

server.js

var app = express();
....
var someroute = require("./routes/someroute");
app.use("/someroute", someroute);
server.createServer(app);

根据反馈更新答案:

在您的 server.js 文件中,您可能有一个变量来保存初始化时的 socket.io 实例,我们称之为 io .

您将像这样初始化 io 变量:

//example taken from socket.io front page
var io = require('socket.io')(80);

注册中间件时,您可以将此变量附加到 req 并在路由中使用它:

//this goes prior to your route registration
app.use(function(req, res, next) {
req.io = io;
});

在路由中,您会将 req.io 称为套接字实例:

router.use('/', routes.router, function (req, res, next) {
req.io.emit("something", {});
});

关于javascript - 如何在层之间传递 http 服务器变量,而不是将其用作 node.js 中不同文件中的 require 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32881454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com