Meteor.js iron:路由器服务器路由触发RangeError:超出最大调用堆栈大小

时间:2015-07-28 19:56:56

标签: javascript meteor stripe-payments iron-router webhooks

我正在设置我的服务器上的Stripe webhook路由,并直接从自述文件中复制代码,但是当我从条带发送测试webhook到我的服务器时,我得到了RangeError。

我的路线定义如下:

Router.route('/webhooks/stripe', { where: 'server' })
.get(function () {
    // GET /webhooks/stripe
    console.log("Get request from stripe")
})
.post(function () {
    // POST /webhooks/stripe
    console.log("Received POST Webhook from Stripe");
    console.log(this);

    this.response.end('webhook ended');
})
.put(function () {
    // PUT /webhooks/stripe
    console.log("Put request from stripe")
})

我也试过定义这样的路线:

Router.map(function(){
this.route("webhooks", {layoutTemplate:null, path:'/webhooks/stripe', where:"server"}).post(function () {
    // POST /webhooks/stripe
    console.log("Received POST Webhook from Stripe");
    console.log(this);
    // // NodeJS  response object
    // var response = this.response;

    this.response.end('webhook ended');
})
})

我正在使用ultrahook将测试webhook转发到我的本地开发机器。我没有得到任何控制台输出,除了上面的错误打印一次。 我还尝试使用Chrome扩展程序Postman命中端点,我收到同样的错误。

更新: 也尝试了这个没有改变的路线定义

Router.route('/webhooks/stripe', function () {
    var req = this.request;
    var res = this.response;
    res.end('hello from the server\n');
}, {where: 'server'});

我必须做错事,但我找不到一个对我有用的例子。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

好吧所以我在发布之前就花了很长时间才看到这个,事实证明我真的需要更改我的onBeforeAction调用以排除服务器路由。

我有

Router.onBeforeAction(requireLogin, {except:["home"]});

我需要将其更改为

Router.onBeforeAction(requireLogin, {except:["home", "webhooks"]});

我的requireLogin方法如下所示:

var requireLogin = function() {

    if (! Meteor.user()) {
        if (Meteor.loggingIn()) {
            this.render(this.loadingTemplate);
        }else{
            Router.go('/');
            this.next();
        }
    } else {
        this.next();
    }
};