2014-02-10 4 views
0

Я создаю оболочку узла для API и получаю ошибку переполнения стека при прикреплении файла pdf в запросе POST на сервер.Узел обертки: превышен максимальный размер стека вызовов

Основная логика в src/lob.coffee:

fs = require "fs" 

USER_AGENT = "Lob: Node Wrapper" 

API_HOST = "https://api.lob.com" 
API_PATH = "/v1" 

module.exports = lob = (api_key) -> 

    request = (method, path, data, cb) -> 

    request_object = { 
     method : method, 
     uri : "#{API_HOST}#{API_PATH}#{path}", 
     headers : { 
     "Accept" : "application/json", 
     "Connection" : "close", 
     "User-Agent" : USER_AGENT 
     }, 
     auth : { 
     user : api_key, 
     pass : "" 
     } 
    } 

    if typeof data is "function" 
     cb = data 

    r = request request_object, (err, res, body) -> 
     body = JSON.parse(body) 
     if body.errors? and err is null 
     err = body.errors 
     delete body.errors 
     cb err, body 
     this 

    if method is "POST_FORM" 
     form = r.form() 
     Object.keys(data).forEach (_k) -> 
     form.append _k, data[_k] 
     this 

    objects: 
    createObject: (data, cb) -> 
     path = "/objects" 
     data.file = fs.createReadStream data.file.substr 1 
     request "POST_FORM", path , data, cb 

И я написал этот базовый файл в test/manual.coffee для тестирования функциональности:

api_key = "test_0dc8d51e0acffcb1880e0f19c79b2f5b0cc" 
lob  = require('../src/lob')(api_key) 

object2 = 
    name: "TEST" 
    file: "@/Users/Admin/Downloads/test.pdf" 
    setting_id: 100 

lob.objects.createObject object2, (err, res) -> 
    console.log err, res 

Но когда я запускаю тестовый файл, я получаю следующее ошибка: ERROR: RangeError: Maximum call stack size exceeded, и я не уверен, в чем причина этого.

ответ

0

Рекурсия

objects: 
    createObject: (data, cb//here) -> 
     path = "/objects" 
     data.file = fs.createReadStream data.file.substr 1 
     request "POST_FORM", path , data, cb //here 
+0

Я немного не уверен, почему это может вызвать рекурсию? – Anconia

Смежные вопросы