Node.js中使用http.createServer()如何获取创建的服务访问链接
解决方法
http.createServer返回的是服务实例本身,你需要等服务完成端口监听后,通过server.address()方法获取监听信息,再拼接访问链接:
本地运行场景
直接监听服务的listening事件,触发后再打印链接即可:
const http = require('http') const port = 1234; const createServer = http.createServer(); const server = createServer.listen(port); const websocket = new web({ httpServer: server }); // 等服务启动完成后再获取地址 server.on('listening', () => { const addr = server.address() // 本地访问链接 const localUrl = `http://localhost:${addr.port}` console.log('服务本地访问链接:', localUrl) })
如果你的服务是监听在公网IP上,还可以拼接机器的公网IP生成公网访问链接。
Replit等平台部署场景
Node.js本身无法直接获取反向代理/平台分配的外部访问域名,这类域名一般会被平台注入到环境变量中,你可以直接读取拼接:
以Replit为例:
server.on('listening', () => { const localUrl = `http://localhost:${port}` // 读取Replit环境变量拼接部署域名 const deployUrl = `https://${process.env.REPL_SLUG}.${process.env.REPL_OWNER}.repl.co` console.log('本地链接:', localUrl) console.log('部署链接:', deployUrl) })
如果是其他平台,参考对应平台的开发文档读取对应的环境变量即可。
内容的提问来源于stack exchange,提问作者Texis
相关产品推荐
相关产品推荐

