Node.js localhost:1337在生产中变成了什么?

Node.js localhost:1337在生产中变成了什么?,node.js,backend,strapi,Node.js,Backend,Strapi,我相信这个问题很基本,但它让我困惑。 目前处于开发模式,我的后端在localhost:1337中运行(确切地说是使用Strapi cms)。 但是,当网站部署到web服务器时,它会变成什么呢 具体来说,网站将驻留在子目录中,而不是根目录中,这会影响吗 目前,这是一个url,我在项目内部使用它作为图像src: localhost:1337/uploads/image-example.jpg 我正在尝试了解项目部署后的新url是什么,更重要的是,它部署在子目录中,而不是根目录中 提前谢谢你不必做任何

我相信这个问题很基本,但它让我困惑。 目前处于开发模式,我的后端在localhost:1337中运行(确切地说是使用Strapi cms)。 但是,当网站部署到web服务器时,它会变成什么呢

具体来说,网站将驻留在子目录中,而不是根目录中,这会影响吗

目前,这是一个url,我在项目内部使用它作为图像src: localhost:1337/uploads/image-example.jpg

我正在尝试了解项目部署后的新url是什么,更重要的是,它部署在子目录中,而不是根目录中


提前谢谢你不必做任何事。

大多数(如果不是全部的话)web主机都使用
端口
环境变量来配置应用程序服务器。我刚刚通过Strapi进行了快速代码搜索,发现:

读取环境变量或使用默认值(而不是要求使用带有
0
的随机端口,以在开发时实现可预测性)。如果您使用了他们的初学者脚本,我会假设您的应用程序也有相同的脚本

在许多情况下,这就足够了,只有两个例外

  • 如果您的应用程序服务器不知道其URL,它只能生成相对URL。例如,它将无法撰写包含自身链接的电子邮件

    HTTP重定向有时需要一个绝对URL

  • 仅设置端口假定应用程序将安装在
    /
    上。例如,如果您正在配置自己的web服务器(而不是Heroku),并且希望在
    /blog
    上装载应用程序,则需要某种方法告知应用程序,以便它可以在路径上放置正确的前缀

    也许可以通过将URL限制为相对路径来解决这个问题,但这听起来很乏味,我认为通常不会这样做。而且传入的请求实际上没有足够的信息来识别用户正在查看的URL。相反,您会在带外显示应用程序的URL

    例如,Grafana在其配置文件中,您将完整的URL前缀Prometheus等放在其中

    但是,我认为Heroku不能将应用程序装载到
    /
    以外的任何位置,因此端口应该足够了

  • 以下是在Heroku上运行的完整服务器,并向您展示了其环境:

    const-app=require(“express”)();
    app.set(“json空格”,2);
    应用程序获取(“/”,(请求,请求)=>{
    res.send(process.env);
    });
    const server=app.listen(process.env.PORT,()=>{
    console.log('服务器已启动',server.address());
    });
    
    端口
    变量是它所需的全部配置;环境不包括应用程序名称

    对应用程序的生产URL进行硬编码可能会成为维护负担,因此如果您最终确定应用程序的URL是什么,请确保它仍然可以通过命令行参数或环境变量进行配置


    因此,为了具体回答您的问题,您的图像src应该以
    /uploads

    开始,您计划如何部署到web服务器?使用Heruko。我知道它仍然是strapi cms,但目前我正在使用这个url作为images src:localhost:1337/uploads/image.jpg。我正在尝试了解一旦部署新的url会是什么?更重要的是,该网站将不会驻留在根目录中,而是位于ThanksIn Heroku的子文件夹中,url
    localhost:1337
    将变成
    appname.herokuapp.com
    。您的图像url会相应更改。如果您希望将应用程序放在子文件夹中,Heroku不建议这样做,作为一种解决方法,它可能会有所帮助。@Prasad我认为该页面讨论的是git存储库的目录,而不是URL路径。
    "port": "${process.env.PORT || 1337}",