Node.js Nodejs Express POST 404在live上未找到错误,正在本地主机上工作
我最近在我的live server上更改了我的域(和SSL证书),从那以后我就无法发布到node.js express应用程序 GET工作得很好,POST在localhost上工作,但每当我发送POST请求时,我的live应用程序都会返回404错误 错误堆栈跟踪显示:Node.js Nodejs Express POST 404在live上未找到错误,正在本地主机上工作,node.js,express,ubuntu,post,http-status-code-404,Node.js,Express,Ubuntu,Post,Http Status Code 404,我最近在我的live server上更改了我的域(和SSL证书),从那以后我就无法发布到node.js express应用程序 GET工作得很好,POST在localhost上工作,但每当我发送POST请求时,我的live应用程序都会返回404错误 错误堆栈跟踪显示: Error: Not Found at /opt/bitnami/apps/tot/app.js:63:15 at Layer.handle [as handle_request] (/opt/bitnami/ap
Error: Not Found
at /opt/bitnami/apps/tot/app.js:63:15
at Layer.handle [as handle_request] (/opt/bitnami/apps/tot/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:317:13)
at /opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:335:12)
at next (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:275:10)
at allowCrossDomain (/opt/bitnami/apps/tot/app.js:56:5)
at Layer.handle [as handle_request] (/opt/bitnami/apps/tot/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:317:13)
at /opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:335:12)
at next (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:275:10)
at SendStream.error (/opt/bitnami/apps/tot/node_modules/serve-static/index.js:121:7)
at SendStream.emit (events.js:200:13)
at SendStream.error (/opt/bitnami/apps/tot/node_modules/send/index.js:270:17)
at SendStream.onStatError (/opt/bitnami/apps/tot/node_modules/send/index.js:421:12)
我有一个非常简单的应用程序:
require('dotenv').config();
const express = require('express');
const app = express();
const helmet = require('helmet');
//const morgan = require('morgan'); //logging requests to console
//const fileUpload = require('express-fileupload');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const path = require('path');
const startupDebugger = require('debug')('tot:startup');
const mongoDebugger = require('debug')('tot:mongo');
const port = process.env.WEB_PORT;
// configure middleware
app.set('port', process.env.port || port); // set express to use this port
//app.set('views', __dirname + '/views'); // set express to look in this folder to render our view
app.set('view engine', 'ejs'); // configure template engine
app.use(helmet());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // parse form data client
app.use(express.static(path.join(__dirname, 'public'))); // configure express to use public folder
//app.use(fileUpload()); // configure fileupload
const urlencodedParser = bodyParser.urlencoded({ extended: false })
// --- Routes ---
const {getHomePage} = require('./routes/index');
const {playground} = require('./routes/playground');
const {getMessage} = require('./routes/slack/events-api');
const {getComponent} = require('./routes/slack/interactive-components');
const {renderSurvey} = require('./routes/feedback/survey');
const {score} = require('./routes/feedback/score-api');
app.get('/', getHomePage);
app.get('/playground', playground);
// Slack APIs
app.post('/slack/events-api', getMessage);
app.post('/slack/interactive-components', urlencodedParser, getComponent);
//Feedback
app.get('/feedback/survey/:team_id/:user_id/:question_id/:date', renderSurvey);
app.post('/feedback/score', score);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
console.error(err.stack);
next(err);
});
app.listen(port, () => { startupDebugger(`Server running on port: ${port}`); });
mongoose.connect(process.env.MONGO, { useNewUrlParser: true })
.then(() => mongoDebugger('Connected to MongoDB.'))
.catch(error => mongoDebugger('MongoDB Error: '+error));
下面是/slack/events api的一个示例
getMessage: async function (req, res) {
//console.log(req);
let payload = req.body;
console.log('Payload:');
console.dir(payload, {depth: null});
slackDebugger('Slack Event API Challange Request');
res.render('slack/events-api.ejs', {
title: "Slack Bot"
, output: req.body.challenge
});
}
}
当我在当地通过邮递员投递时,效果很好:
[nodemon] starting `node app.js`
tot:startup Server running on port: 3000 +0ms
tot:mongo Connected to MongoDB. +0ms
Payload:
{ token: 'Jhj5dZrVaK7ZwHHjRyZWjbDl',
challenge: '3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P',
type: 'url_verification' }
tot:slack Slack Event API Challange Request +0ms
在实时服务器上:
[nodemon] starting `node app.js`
tot:startup Server running on port: 3000 +0ms
tot:mongo Connected to MongoDB. +0ms
Error: Not Found
at /opt/bitnami/apps/tot/app.js:63:15
at Layer.handle [as handle_request] (/opt/bitnami/apps/tot/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:317:13)
at /opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:335:12)
at next (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:275:10)
at allowCrossDomain (/opt/bitnami/apps/tot/app.js:56:5)
at Layer.handle [as handle_request] (/opt/bitnami/apps/tot/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:317:13)
at /opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:335:12)
at next (/opt/bitnami/apps/tot/node_modules/express/lib/router/index.js:275:10)
at SendStream.error (/opt/bitnami/apps/tot/node_modules/serve-static/index.js:121:7)
at SendStream.emit (events.js:200:13)
at SendStream.error (/opt/bitnami/apps/tot/node_modules/send/index.js:270:17)
at SendStream.onStatError (/opt/bitnami/apps/tot/node_modules/send/index.js:421:12)
在我的一生中,我无法理解为什么在更新live URL/SSL之后,它突然停止了live上的工作
如果有人能为我指出正确的方向,那将是令人惊讶的。我的生活环境中一定有什么东西坏了,我重新部署了该实例,它又开始工作了。