如何解决hapi 服务器:当我使用 POST 方法请求时,hapi 服务器以 null 响应,但在 localhost
使用 hapi 服务器 -v = 16.7 乔伊-v = 10.6 部署在aws ec2,nginx反向代理
server.js 中的服务器代码:
'use strict';
//let newrelic = require('newrelic');
let Hapi = require('hapi');
let Routes = require('./Routes');
let Plugins = require('./Plugins');
let Bootstrap = require('./Utils/BootStrap');
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
const Inert = require('inert');
const Vision = require('vision');
const HapiSwagger = require('hapi-swagger');
const Pack = require('./package');
const Config = require('./Config');
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
const server = new Hapi.Server();
server.connection({
port: Config.dbConfig.config.PORT,routes: {cors: true}
});
let mongoOpts = {
reconnectTries: 60,reconnectInterval: 2000,useMongoClient:true
};
mongoose.connect(Config.dbConfig.config.dbURI,mongoOpts,(err,res) => {
if (err) {
console.log("DB Error: ",err);
process.exit(1);
} else {
console.log('MongoDB Connected');
}
});
server.register([
Inert,Vision,{
'register': HapiSwagger,'options': {
info: {
'title': Config.dbConfig.config.SWAGGERNAME,'version': Pack.version,description: '',},//documentationPath: '/',tags:[
{
name: 'v2.1.0',description: 'API'
}
],grouping: 'tags',}],(err) => {
server.start((err) => {
if (err) {
console.log("Server err----------->",err);
} else {
console.log('Server running at:',server.info.uri);
}
});
});
server.on('response',(request) => {console.log('response===>>>:');
if(request.url.path.startsWith('/panel')){
}
else {//console.log('HEADERS===========>:',request.headers);
/* console for checking the params in the request*/
console.log(request.info.remoteAddress + ': ' + request.method.toUpperCase() +
' ' + request.url.path + ' --> ' + request.response.statusCode);
console.log('Request payload:',request.payload);
}
});
process.on('uncaughtException',function (err) {
console.log(err);
});
server.register(Plugins,function (err) {
if (err) {
server.error('Error while loading plugins : ' + err)
} else {
server.log('info','Plugins Loaded')
}
});
server.register(Inert,function (err) {
if (err) {
throw err;
}
server.route(Routes);
});
server.route([
{
method: 'GET',path: '/{param*}',/* show error page */
handler: function (req,res) {
res.file('./error.html')
}
},{
path: "/panel/{path*}",method: "GET",handler: { /* open admin panel index from panel path*/
directory: {
path: ['./_admin'],listing: false,index: ['index.html']
}
}
}
]);
这部署在 AWS-EC2 中,使用 Nginx 反向代理。当我们使用有效负载命中 POST 请求时,在 localhost 中工作正常并将数据保存到 MongoDB。但是,当我们从另一个域对 ec2 部署的服务器执行相同的 POST 方法时,pm2 日志中显示以下错误。在运行控制器之前,它似乎以 null 响应。
pm2 日志中的错误,当我们点击 POST 方法时:
TypeError: Cannot read property 'statusCode' of null
at /var/www/html/vhosts/custom_BE_ecommerce/api/server.js:123:65
at Object.internals.handler (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/podium/lib/index.js:283:33)
at invoke (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/podium/lib/index.js:255:23)
at each (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/podium/lib/index.js:259:13)
at Object.exports.parallel (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/items/lib/index.js:70:13)
at Object.internals.emit (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/podium/lib/index.js:276:18)
at module.exports.internals.Server.internals.Podium._emit (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/podium/lib/index.js:156:15)
at each (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/podium/lib/index.js:197:47)
at Object.exports.parallel (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/items/lib/index.js:70:13)
at relay (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/podium/lib/index.js:198:15)
at Object.internals.emit (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/podium/lib/index.js:202:16)
at internals.emitEmitter (/var/www/html/vhosts/custom_BE_ecommerce/api/node_modules/podium/lib/index.js:303:15)
at processTicksAndRejections (node:internal/process/task_queues:79:21)
需要有关此问题的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。