#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, чтобы выбрать маршрутизацию, но как только это будет сделано, маршрутизация должна выполняться по назначению.