Есть ли способ разместить мой экспресс-api в Интернете?

#node.js #api #express

#node.js #API #экспресс

Вопрос:

Недавно я начал изучать MERN stack, и я создал свое первое интерфейсное приложение, используя React, и подключил его с помощью API, который я создал с помощью Express. Он отлично работает на моем локальном компьютере, используя localhost.

Но всякий раз, когда я пытаюсь загрузить его на хостинг, например, на Heroku, он выдает мне ошибку 404 всякий раз, когда я открываю ссылку. Есть ли способ бесплатно загрузить мой API в службу хостинга или я что-то делаю неправильно в своем коде?

     const express = require('express');
    const mongoose = require('mongoose');
    const cors = require('cors');
    const app = express();
    require('dotenv').config({ path: __dirname   '/.env' });
    const URI = process.env.URI;
    mongoose.connect(URI, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: true });
    const connection = mongoose.connection;
    connection.once('once', () => {
      console.log('connection to database has been initiated sucessfully');
    });
    const itemRouter = require('./routes/itemsRouter.js');
    const orderRouter = require('./routes/orderRouter.js');
    const mailRouter = require('./routes/mailRouter.js');
    app.use(express.json());
    app.use(cors());
    app.use('/items', itemRouter);
    app.use('/orders', orderRouter);
    app.use('/sendMail', mailRouter);
    const PORT = process.env.PORT || 5000;
    app.listen(PORT, () => {
      console.log(`App is running on port ${PORT}`);
    });

 

Комментарии:

1. heroku должен сработать. вы следите за документами heroku express docs? devcenter.heroku.com/articles/getting-started-with-nodejs

2. вау … спасибо, братан, это действительно сработало, спасибо, все, что я сделал, это просто клонировал репозиторий git, который они включают, и я поместил в него свой проект, внес изменения и протолкнул его, и он работал отлично, я просто.. не понимаю, почему и что произошло, учитывая, что я не делал этого раньше ни с одним из моих интерфейсных проектов, просто со статическим сайтом, но действительно спасибо; D

Ответ №1:

Heroku должен сработать, если вы следили за настройками Heroku Dev Center.

Однако, если вы используете недавно поставленный ubuntu или аналогичный сервер. Вам нужно будет настроить среду, выполнив следующие действия:

  • Установите время выполнения узла, nginx и диспетчер деамонов узла (в данном случае PM2)
    • sudo apt install nodejs nginx
    • npm install -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 start index.js

Вам придется перезапустить nginx и создать символические ссылки для NGINX, чтобы выбрать маршрутизацию, но как только это будет сделано, маршрутизация должна выполняться по назначению.