Я протестировал следующий экспресс-сервер 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, которое находится в «общедоступной» папке.
Что я тестировал до сих пор:
Кто-нибудь знает, что мне не хватает?
Какой URL вы предоставляете ?? Это должен быть /test, а не //test.
В браузере я вызываю «mydomain / api / test» (где api направляется на сервер узла через порт 3000), и, как вы можете видеть в приведенном выше коде, я прослушиваю «/ test».





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