Хобрук: Ваш путь к мастерству в программировании

Оболочка узла: превышен максимальный размер стека вызовов

Я создаю оболочку узла для 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и я не уверен, в чем может быть причина.


Ответы:


1

Рекурсия

objects:
    createObject: (data, cb//here) ->
      path = "/objects"
      data.file = fs.createReadStream data.file.substr 1
      request "POST_FORM", path , data, cb //here
17.02.2014
  • Я немного не уверен, почему это может вызвать рекурсию? 22.02.2014
  • Новые материалы

    МАШИННОЕ ОБУЧЕНИЕ И EDA
    Каковы шаги в машинном обучении Определение проблемы Генерация гипотез Извлечение данных Исследование данных Прогнозное моделирование Развертывание модели Зачем нам ЭДА? Идентификация..

    В чем основные различия между ReactJS и React-Native?
    В чем основные различия между ReactJS и React-Native? Что я узнал, создавая веб-приложения, а затем мобильные приложения на React React-Native существует уже около 2 лет и стал..

    LeetCode — Умножение строк
    Постановка задачи Даны два неотрицательных целых числа num1 и num2 , представленные в виде строк, вернуть произведение num1 и num2 , а также представлен в виде строки. Примечание . Вы..

    Как я могу подписаться на тему изображений в ROS Matlab и получить изображение RGB?
    Привет, Пожалуйста, как я могу извлечь изображение из сообщения ROS Image, за которым следует imshow? Я уже подписался на правильную тему, но message.getData() дает мне объект..

    Понимание СТРУКТУРЫ ДАННЫХ И АЛГОРИТМА.
    Что такое структуры данных и алгоритмы? Термин «структура данных» используется для описания того, как данные хранятся, а алгоритм используется для описания того, как данные сжимаются. И данные, и..

    Как интегрировать модель машинного обучения на ios с помощью CoreMl
    С выпуском новых функций, таких как CoreML, которые упростили преобразование модели машинного обучения в модель coreML. Доступная модель машинного обучения, которую можно преобразовать в модель..

    Создание успешной организации по науке о данных
    "Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..