Ubuntu Node.js Express Server Ошибка «Не удается получить // тест» - PullRequest
0 голосов
/ 10 июня 2018

Я протестировал следующий экспресс-сервер 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.log(req.body);

    res.end();
});

// Start listening
app.listen(3000, function() {
    console.log('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 вклпапка моего узла> без эффекта

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

1 Ответ

0 голосов
/ 11 июня 2018

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

...