Ошибка сервера Ubuntu Node.js Express «Невозможно получить // тест»

Я протестировал следующий экспресс-сервер node.js на своем локальном компьютере (Windows 10), и он работал, как ожидалось.

// Imports
const express = require('express');
const { check, validationResult } = require('express-validator/check');
const bodyParser = require('body-parser');
const path = require('path');
const session = require('express-session');

// app
const app = express();

// Body Parser Middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

// Get static path
app.use(express.static(path.join(__dirname, 'public')));

// Get requests
app.get('/test', (req, res) => {
    res.end('Hello World');
});

// Validation test
app.post('/testSubmit', [
    check('mail').isEmail(),
    check('password').isLength({ min: 5 })
], (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        return res.status(422).json({ errors: errors.array() });
    }

    console.info(req.body);

    res.end();
});

// Start listening
app.listen(3000, function() {
    console.info('Server started on Port 3000');
});

Ошибка:

Но теперь я загрузил свой код на сервер ubuntu и получаю сообщение об ошибке «Cannot GET // test», когда пытаюсь вызвать myserv / api / test.

То же самое с myserv / api / testSubmit («Cannot POST // testSubmit»).

Что работает:

Статическое содержимое работает в ubuntu, если я вызываю myserv / api /, я получаю содержимое index.html, которое находится в «общедоступной» папке.

Что я тестировал до сих пор:

  • Удаление кода статического содержимого> без эффекта
  • Обновлены Node.js и NPM> без эффекта
  • npm install> нет эффекта
  • chmod -R 777 в моей папке узла> нет эффекта

Кто-нибудь знает, что мне не хватает?

Я считаю, что когда вы хотите отправить данные, вы должны сказать res.send ("Hello World") вместо res.end ().

AmirHossein Rd 10.06.2018 07:30

Какой URL вы предоставляете ?? Это должен быть /test, а не //test.

Harshal Y. 10.06.2018 11:05

В браузере я вызываю «mydomain / api / test» (где api направляется на сервер узла через порт 3000), и, как вы можете видеть в приведенном выше коде, я прослушиваю «/ test».

Gonios 10.06.2018 11:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
603
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил проблему, это никак не связано с узлом. Проблема заключалась в обратном прокси, который я использую для запуска node.js вместе с apache.

Windows:

ProxyPass http://192.168.3.132:3000
ProxyPassReverse http://192.168.3.132:3000

Ubuntu:

ProxyPass http://192.168.1.12:3000/
ProxyPassReverse /api http://192.168.1.12:3000/

У меня был / после URL-адреса (только на моем сервере Ubuntu), который ему не принадлежит

Другие вопросы по теме