【问题标题】:Request not defined in Nodejs app请求未在 Nodejs 应用程序中定义
【发布时间】:2014-12-27 03:10:44
【问题描述】:

我只是想将数据发送到 Stripe 以处理客户。但是请求没有定义?这怎么可能?

错误:

13:52:17 web.1 | /Users/admin/herokutest/app/routes.js:139

13:52:17 web.1 | var stripeToken = req.body.stripeToken;

13:52:17 web.1 | ReferenceError: req 未定义

App.js 文件:

var stripeToken = req.body.stripeToken;

function subscribeUser(token, res){
    stripe.customers.create({
        card: stripeToken,
        plan: 'standard',
        email: 'test@test.test'
    }, function(err, customer) {
        if (err) {
            res.send({ok: false, message: 'Uh oh. there was a problem processing your card (error: ' + JSON.stringify(err) + ')'});
        } else {
            res.send({ok: true, message: 'Perfect, you have been subscribed to a plan'}),
            res.render('subscribe', { title: 'Congratulations!' })
        }
    });
}

app.post('/getstarted3', function (req, res) {
  subscribeUser();
  res.render('subscribe', { title: 'Welcome' }); // load the index.jade file    
});

【问题讨论】:

    标签: node.js express stripe-payments


    【解决方案1】:

    req 未在整个文件的范围内声明。唯一声明它的位置是在参数列表function (req, res) 中,并且只在函数定义内创建了一个作用域的变量。您可能打算将下一行更改为:

      subscribeUser(req.body.stripeToken);
    

    然后把另一个函数定义改成这样:

    function subscribeUser(stripeToken){ ...
    

    【讨论】:

      【解决方案2】:

      var stripeToken = req.body.stripeToken; 行不在正确的范围内,您在请求处理程序之外拥有它。

      另外,您没有向subscribeUser() 传递任何参数,并且您正试图多次响应同一个请求。我猜你想要这样的东西:

      function subscribeUser(token, res){
          stripe.customers.create({
              card: token,
              plan: 'standard',
              email: 'test@test.test'
          }, function(err, customer) {
              if (err) {
                  res.send({ok: false, message: 'Uh oh. there was a problem processing your card (error: ' + JSON.stringify(err) + ')'});
              } else {
                  res.send({ok: true, message: 'Perfect, you have been subscribed to a plan'}),
      
                  // you can't respond to a request twice, it's one or the other ...
                  //res.render('subscribe', { title: 'Congratulations!' })
              }
          });
      }
      
      app.post('/getstarted3', function (req, res) {
        subscribeUser(req.body.stripeToken, res);
      
        // you can't respond multiple times to the same request
        //res.render('subscribe', { title: 'Welcome' }); // load the index.jade file    
      });
      

      【讨论】:

        猜你喜欢
        • 2019-06-22
        • 1970-01-01
        • 2017-03-18
        • 2020-08-21
        • 2016-04-13
        • 1970-01-01
        • 2017-10-25
        • 2020-04-13
        • 1970-01-01
        相关资源
        最近更新 更多