2017-02-09 8 views
1

В какой-то момент я просто хочу, чтобы сделать POST запрос на мой rails сервер работает на localhost:3000nodeJS запросить POST Для локального хоста: 3000 ECONNREFUSED

Если использовать как postman на ровном cUrl я могу свистеть мой API

Но поклоны, с моим приложением узла я хочу сделать это:

var req_body = { 
     'my_id': id, 
     'dataTable': data } 


    var options = { 
     method: 'POST', 
     url:  config.get('api_url') + 'end_tracking', 
     json:  true, 
     body:  req_body 
     } 
     // config.get('api_url') return http://localhost:3000/ 

     request(options, function (error, response, body) { 
       console.log(error) 
    ... } 

это то, что я получаю:

{ Error: connect ECONNREFUSED 127.0.0.1:3000 
at Object.exports._errnoException (util.js:896:11) 
at exports._exceptionWithHostPort (util.js:919:20) 
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1073:14) 
code: 'ECONNREFUSED', 
errno: 'ECONNREFUSED', 
syscall: 'connect', 
address: '127.0.0.1', 
port: 3000 } 

и, как я уже сказал, если я сделаю этот запрос непосредственно с почтальоном, все будет работать!

+0

Похоже, что приложение с рабочим узлом использует тот же хост и порт, что и рельсы. – alexmac

+0

мое приложение для узла находится на 8080 – F4Ke

ответ

2

Я, наконец, сделал это!

По неизвестной причине, доступ localhost:3000, запущенный с rails s не работает на всех на моем сервере узла

, но я работал, когда я начал сервер рельсы с rails s -b 0.0.0.0!

+0

Удивительное решение проблемы, я тратил часы, пытаясь исправить. спасибо. один вопрос, хотя эта стратегия заставила мою Mac OS запросить разрешение на использование рубинов для входящих сетевых подключений. это безопасно, какие соображения безопасности связаны с этой опцией? и есть ли где-нибудь документация на опции «-b»? Кажется, что это не во встроенном меню справки rails. – s2t2

0

, как я это сделал, просто использовать ту же структуру, и я надеюсь, что он работает для вас

request({ 
     url: url, //URL to hit 
     method: 'post', 
     headers: headers, 
     timeout: 10000, 
     body: JSON.stringify(body) 
    }, function (error, result, body) { 
     if (error) { 
      console.log(error); 
     } else if (result.statusCode == 500) { 
      console.log('not found'); 
     } else { 
      console.log('success') 
     } 
    }); 

надеюсь, что это работает.

+0

То же самое :( если я пытаюсь получить localhost в одиночку (без: 3000), он показывает базовое «это работает» Но если я сделаю свой запрос с завитком, это будет успешно, почему бы не на моем узле app – F4Ke

+0

вы можете сделать console.log (ошибка); –