在aws上部署的NodeJ上的post函数返回错误:502

时间:2016-03-14 17:20:24

标签: node.js amazon-web-services nginx paypal elastic-beanstalk

我目前正在实施一个服务器来处理来自客户端的PayPal API调用以及使用PayPal服务的通信,以便获取令牌并在braintree中创建用户。

关于弹性豆茎的部署进展顺利。当我通过路由器调用令牌方法时,我得到令牌并成功。当我尝试创建一个新的braintree客户我遇到一个神秘的502错误时,问题就出现了。知道为什么吗?我正在使用AIM的标准nginx设置监听端口80.这不是重复,因为其他类似的问题没有解决我的问题。

使用nginx 1.8.0

index.js

var express = require('express');
var router = express.Router();
var http = require('http');
var braintree = require('braintree');

var gateway = braintree.connect({
                            environment: braintree.Environment.Sandbox,
                            merchantId: "xxxxxxxxxxxxxxx",
                            publicKey: "xxxxxxxxxxxxxxx",
                            privateKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
                            });

router.get('/', function(req,res) {
       res.send('Iam a tree, a brain tree');
       });

router.get('/token', function (req, res) {
       gateway.clientToken.generate(null, function (error, response) {
                                    res.json(response);
                                    });
       });

router.post('/createCustomer', function(req, res) {

var customer = req.body;
console.log(req.body);
       gateway.customer.create({
                               firstName: customer.firstName,
                               lastName: customer.lastName,
                               company: customer.company,
                               email: customer.email,
                               phone: customer.phone,
                               fax: customer.fax,
                               website: customer.website
                               }, function (err, result) {
                               res.json(err,result);
                               });
       });

module.exports = router;

main.js

var express = require('express');
var http = require('http');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);

/// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});


// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: err
    });
});
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
    message: err.message,
    error: {}
});
});

module.exports = app;

最后我的 www 文件

#!/usr/bin/env node
var debug = require('debug')('test');
var app = require('../main.js');

app.set('port', process.env.PORT || 8081);

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});

1 个答案:

答案 0 :(得分:0)

回答我的问题,因为我发现了问题的问题。问题的根源在" / createCustomer",从

中删除错误
res.json(err,result);

并将其更改为

res.json(result);

此外,我不是创建一个客户,其选项(姓名,姓)只是一个空的。将它包装起来" / createCustomer"路由器功能现在看起来像这样。

/* Get Creates a new customer with the given params */
router.post('/createCustomer', function(req, res) {

  var customer = req.body;
  console.log(req.body);

  gateway.customer.create({}, function(err, result) {
    res.json(result);
  });
});

这有点奇怪,因为该函数的第一个版本是从关于节点服务器设置的Braintree文档中复制的。无论如何,此解决方法允许创建客户将其与我当前用户在自定义Parse服务器上链接,并在以后编辑其属性。