heroku 如何从加载到浏览器的Javascript文件中检索Nodejs/Express Web服务器端口号

8cdiaqws  于 2022-11-13  发布在  Java
关注(0)|答案(1)|浏览(88)

我的情况如下:我有一个Node/Express server.js文件,它由Node.js运行。这个后端用于我的网站,我将其部署到Heroku。Web服务器服务于两个端点,从const PORT = process.env.PORT||八千:

  • “/”或root(这将通过发送文件index.html进行响应)
  • '/转录'

当向/transcription发出请求时,会向第三方API发出Axios post请求以获取临时令牌。此令牌作为res.json(data)传递到/transcription的响应中。目前为止没有问题。
这里有一个JavaScript文件asr.js,当我访问页面asr.html(与index.html不同)时加载该文件,在asr.js中,我获取http://localhost:8000/transcription。我得到临时令牌并继续我的转录。但是,当我把它推到像Heroku这样的环境时,我不知道端口号是什么,我无法成功地向http://localhost:8000/transcription或http://localhost:${PORT}/transcription发出获取请求,因为process没有在asr.js文件中定义;它不是由节点执行
因此,我的问题是 * 当我将应用程序部署到Heroku时,如何确定我的Node/Express服务器端口,以便在访问asr.html时可以在asr.js中使用它?*
也许这不是一个正确的问题?社区,请帮助!
这是我的文件夹层次结构的快照,以了解更多的上下文。如果需要更多的信息,或者我最初的解释不够,请告诉我。

为了清楚起见,我使用中间件来静态地服务于public文件夹。

vwkv1x7d

vwkv1x7d1#

除非我遗漏了什么,否则为什么要在生产中使用端口?
节点很少作为Web服务器运行,通常您会让NGINX将请求代理到后端服务器,以便该端口仅对NGINX服务器有效,以将这些请求代理回节点,否则您的应用将无法与没有该端口的TLD一起工作。
长话短说,您的前端JS不需要端口号,只需使用运行在端口80 / 443上的TLD即可

相关问题