Ошибка чтения ENOTCONN в Windows 10 при вызове API докера - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь запустить exec-экземпляр моего образа докера через мой проект узла с кодом ниже:

return axios.post(host + `/exec/${id}/start`, { Detach: false, Tty: true }, 
{ responseType: 'stream' })
  .then(function () {
     let stream = response.data
     let socket = stream.socket
     socket.on('data', (data: string) => {
     process.stdin.pause()
      if (!firstLine)
         process.stdout.write(data)
      firstLine = false
      process.stdin.resume()
     })

    process.stdout.on('data', i => {
      socket.write(i.toString())
      if (i == DetachKey) {
        rl.emit('SIGINT')
      }
   })

   rl.on('SIGINT', function () {
     // stop input
     socket.emit('end')
     process.stdin.pause()
     process.stdout.write(exec_exit_msg)
     process.exit(0)
  })
})

В Linux (Ubuntu & Mint) все в порядке, но когда я тестирую свой код в Windows 10, я получаю сообщение об ошибке:

Error: read ENOTCONN
at WriteStream.Socket._read (net.js:529:20)
at WriteStream.Readable.read (_stream_readable.js:453:10)
at resume_ (_stream_readable.js:929:12)
at process._tickCallback (internal/process/next_tick.js:63:19)

Версия моего узла v10.15.3 (с использованием nvm).

Похоже, что-то не так с разъемом. Я много искал, но не мог понять, как решить проблему.

1 Ответ

0 голосов
/ 11 мая 2019

Ниже часть кода делает ошибку. Я удалил его и немного изменил код Но я не знаю, почему это было нормально в Ubuntu

process.stdout.on('data', i => {
  socket.write(i.toString())
  if (i == DetachKey) {
    rl.emit('SIGINT')
  }

})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...