Node.js 有没有办法让我在互联网上托管express api?

Node.js 有没有办法让我在互联网上托管express api?,node.js,api,express,Node.js,Api,Express,我最近开始学习MERN stack,我使用React创建了我的第一个前端应用程序,并使用我使用Express创建的API连接它。它在使用localhost的本地机器上运行得非常好 但每当我尝试将其上传到主机服务时,例如Heroku,每当我打开链接时,它都会给我一个404错误。有没有一种方法可以让我免费将API上传到托管服务中,或者我的代码中有什么地方做错了 const express=require('express'); const mongoose=require('mongoose');

我最近开始学习MERN stack,我使用React创建了我的第一个前端应用程序,并使用我使用Express创建的API连接它。它在使用localhost的本地机器上运行得非常好

但每当我尝试将其上传到主机服务时,例如Heroku,每当我打开链接时,它都会给我一个404错误。有没有一种方法可以让我免费将API上传到托管服务中,或者我的代码中有什么地方做错了

const express=require('express');
const mongoose=require('mongoose');
const cors=需要(“cors”);
常量app=express();
require('dotenv').config({path:uu dirname+'/.env'});
const URI=process.env.URI;
connect(URI,{useNewUrlParser:true,useUnifiedTopology:true,UseFindModify:true});
const connection=mongoose.connection;
connection.once('once',()=>{
log('与数据库的连接已成功启动');
});
const itemRouter=require('./routes/itemsruter.js');
const orderRouter=require('./routes/orderRouter.js');
const mailRouter=require('./routes/mailRouter.js');
使用(express.json());
应用程序使用(cors());
应用程序使用('/items',itemRouter);
应用程序使用('/orders',orderRouter);
app.use('/sendMail',mailRouter);
const PORT=process.env.PORT | 5000;
应用程序侦听(端口,()=>{
log(`App正在端口${port}`上运行);
});

如果您遵循此处的设置,Heroku应该计算出该框

但是,如果您使用的是新发布的ubuntu或类似的服务器。您需要通过执行以下操作来设置环境:

  • 安装节点运行时、nginx和节点deamon管理器(在本例中为PM2)
    • sudo apt安装nodejs nginx
    • npm安装-g pm2
  • 创建nginx配置
    server {
      listen 80;
      index index.html;
      server_name YOUR_DOMAIN/SERVER_IP;
    
      location / {
        proxy_pass 127.0.0.1:NODE_BOUND_PORT;
      }
    }
    
  • 取消对节点脚本的监视
    • pm2启动索引.js

您必须重新启动nginx并为nginx创建符号链接以获取路由,但一旦完成,应按预期进行路由。

heroku应该可以工作。你在关注heroku express文档吗?哇!谢谢兄弟,它真的成功了谢谢你,我所做的只是克隆了他们所包含的git回购协议,我把我的项目放在其中,做出了改变并推动了它,它完美地工作了我只是。。我不明白为什么,发生了什么事,我没有做我的任何前端项目之前只是静态网站,但真的谢谢你;D