Ubuntu Node.js Express 服务器错误 "Cannot GET //test"
Ubuntu Node.js Express Server Error "Cannot GET //test"
我在我的本地机器 (Windows 10) 上测试了以下 node.js express 服务器,它按预期工作。
// 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 服务器,当我尝试调用 myserv/api/test 时出现错误 "Cannot GET //test"。
与 myserv/api/test提交 ("Cannot POST //testSubmit") 相同。
什么有效:
静态内容适用于 ubuntu,如果我调用 myserv/api/,我会得到位于 "public" 文件夹中的 index.html 的内容。
到目前为止我测试的内容:
- 删除静态内容代码 > 无效
- 已更新 Node.js 和 NPM > 无效
- npm 安装 > 无效
- 我的节点文件夹上的 chmod -R 777 > 无效
有人知道我错过了什么吗?
问题已经解决,跟node无关。
问题是我与 apache 运行 node.js 一起使用的反向代理。
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 服务器上)
我在我的本地机器 (Windows 10) 上测试了以下 node.js express 服务器,它按预期工作。
// 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 服务器,当我尝试调用 myserv/api/test 时出现错误 "Cannot GET //test"。
与 myserv/api/test提交 ("Cannot POST //testSubmit") 相同。
什么有效:
静态内容适用于 ubuntu,如果我调用 myserv/api/,我会得到位于 "public" 文件夹中的 index.html 的内容。
到目前为止我测试的内容:
- 删除静态内容代码 > 无效
- 已更新 Node.js 和 NPM > 无效
- npm 安装 > 无效
- 我的节点文件夹上的 chmod -R 777 > 无效
有人知道我错过了什么吗?
问题已经解决,跟node无关。 问题是我与 apache 运行 node.js 一起使用的反向代理。
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 服务器上)