- Node.js EPIPE при попытке записи в порожденный процесс
- Ответы (1 шт):
- Node.js — Error: write EPIPE code: ‘EPIPE
- NodeJS-Error: write EPIPE on socks5 proxy
- 2 ответа
- Похожие вопросы:
- Ошибка: записать EPIPE при выводе узла трубопровода на «| голова»
- Я наконец-то получил ePipe, и это здорово! — Обзор Ewinvape Epipe F30
- Error: write EPIPE #23
- Comments
- Abhi347 commented Oct 26, 2016
- sathyalog commented Oct 26, 2016
- tammyhart commented Oct 27, 2016
- anuraag279 commented Nov 3, 2016
- ghost commented Nov 4, 2016 •
- 1000ch commented Nov 6, 2016
- baacke commented Nov 9, 2016 •
- in-in commented Nov 27, 2016
- CoffiDev commented Nov 30, 2016
- dkouvdis commented Dec 11, 2016
- kamilczujowski commented Feb 7, 2017
- michaelpumo commented Mar 3, 2017
- bertalanimre commented Mar 14, 2017
- 1000ch commented Jul 16, 2017
- evayde commented Nov 29, 2017
- tomhoad commented Mar 5, 2018
Node.js EPIPE при попытке записи в порожденный процесс
Использую child_process.exec для создания порожденных процессов. Далее в порожденный процесс через стандартный поток ввода записываю данные. Вот пример того, как я это делаю:
Суть проблемы в следующем. Если при вызове exec я передаю в качестве первого аргумента имя (путь) несуществующего скрипта, то вместо ошибки о том, что скрипт не может быть выполнен я получаю:
Пробовал в node.js 0.10.20 и 0.12.6 (Linux и Windows соответственно).
Собственно вопрос: в каких еще случаях выбрасывается EPIPE и можно ли как-то понять, что скрипт не может быть выполнен до вызова cmd.stdin.write ?
Ответы (1 шт):
Ошибка с кодом EPIPE обычно возникает при попытке записи в еще не открытый или уже закрытый writable -поток. В данном случае, поток не может быть открыт, потому что дочерний процесс не может быть создан.
Порядок возникновения ошибок определяется асинхронной природой JavaScript, но тут есть одна тонкость. Все экземпляры EventEmitter в node.js по-особенному работают с событием error . Если для этого события не назначено ни одного обработчика, то node.js завершиться с сообщением:
Именно это и происходит с примером в вопросе. Если же все-таки определить обработчик для события error на stdin , тогда функция обратного вызова, переданная в exec , вызовется с ошибкой. Вот как это можно использовать:
Код из примера выше, выполненный в Linux, выведет:
Стоит отметить, что код ошибки, переданной в функцию обратного вызова exec зависит от операционной системы (и, возможно, от используемой оболочки командной строки). В Linux этот код равен 127 , а в Windows — 1 . Если порождаемый процесс активно использует ненулевые коды возврата, то это может стать проблемой. В Windows отличить отсутствие порождаемой команды от случая, когда эта команда завершается с кодом 1 можно только по сообщению об ошибке. В таких случаях, проще всего использовать spawn вместо exec (однако, этот путь имеет и свои минусы). Вот как это можно сделать:
Этот код выведет вот такие сообщения в консоль:
Можно заметить, что порядок ошибок остался таким же, но вторая ошибка порожденного процесса имеет осмысленный код ( ENOENT ).
Источник
Node.js — Error: write EPIPE code: ‘EPIPE
I keep getting EPIPE error, on stdin stream and I can’t find a reason:
This is my code:
And this is my output:
I cannot find a reason for this error, i have also tried to implement
And every line printed from ffprobe (which is a software to check audio/video files specs) is marked as stderr. For example:
stderr: ffprobe version 2.2.4 Copyright (c) 2007-2014 the FFmpeg developers built on Jul 2 2014 15:07:45 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) configuration: —prefix=/usr/local/Cellar/ffmpeg/2.2.4 —enable-shared —enable-pthreads —enable-gpl —enable-version3 —enable-nonfree —enable-hardcoded-tables —enable-avresample —enable-vda —cc=clang —host-cflags= —host-ldflags= —enable-libx264 —enable-libfaac —enable-libmp3lame —enable-libxvid —enable-libfreetype —enable-libtheora —enable-libvorbis —enable-libvpx —enable-librtmp —enable-libopencore-amrnb —enable-libopencore-amrwb —enable-libvo-aacenc —enable-libass —enable-ffplay —enable-libspeex —enable-libschroedinger —enable-libfdk-aac —enable-libopus —enable-frei0r —enable-libopenjpeg —extra-cflags=’-I/usr/local/Cellar/openjpeg/1.5.1_1/include/openjpeg-1.5 ‘ libavutil 52. 66.100 / 52. 66.100
stderr: libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 33.100 / 55. 33.100 libavdevice 55. 10.100 / 55. 10.100 libavfilter 4. 2.100 / 4. 2.100 libavresample 1. 2. 0 / 1. 2. 0 libswscale 2. 5.102 / 2. 5.102 libswresample 0. 18.100 / 0. 18.100 libpostproc 52. 3.100 / 52. 3.100
Источник
NodeJS-Error: write EPIPE on socks5 proxy
Я получаю следующий stacktrace при попытке установить соединение net.Socket() с SOCKS5-сервером:
Мой код выглядит следующим образом:
Я уверен, что это неправильный способ подключения к сокету. Каков был бы правильный метод для этого?
Я взял приведенный выше код из lib/client.js в пакете socksv5.
Кстати, я не хочу использовать существующий пакет (я знаю, что есть много SOCKS-клиентских пакетов для NodeJS), потому что я хотел бы изучить SOCKS, делая это.
Редактировать: вот это выход curl -vv —socks5-hostname 115.159.155.96:1080 http://api.ipify.org?format=json , как Quedaro, предложенные ниже:
Это означает, что прокси-сервер должен работать нормально, не так ли?
Я также добавил в сокет событие error-event, просто записав err в консоль. Вот что я получаю:
2 ответа
У меня есть приложение, состоящее из сервера node.js плюс другие файлы и файл HTML. Файл HTML — это мой клиент, он должен взаимодействовать с сервером node.js. Сервер node.js использует объекты, созданные вместе с другими файлами node.js, для связи с PLC с помощью кабеля ethernet. Итак, я создал.
Мы запускаем много параллельных скребков, используя локальные прокси TOR. Итак, есть список прокси-серверов SOCKS5, всего около 200: socks5://localhost:port socks5://localhost:port2 socks5://localhost:port3 . Некоторые программы не работают с SOCKS и работают только с HTTP прокси. Поэтому нам.
Добавление рабочего кода здесь, если кто-то наткнется на этот вопрос.
Как уже упоминал @Quedaro, рукопожатие socks5 отсутствовало.
Вы уверены, что сервер socks действительно работает? Write EPIPE означает, что сокет не может быть записан, потому что соединение было прервано, надеюсь, закрыто сервером. Попробуйте протестировать эту команду (в системах Linux):
Кроме того, перед отправкой этих данных вы можете сказать ‘hello’ серверу socks, например, отправить следующие байты: 0x05 0x02 0x00 0x01
Чтобы не попасть в какое-либо исключение сокета, попробуйте захватить событие ‘error’ , как это:
Поэтому я смотрю на документы net/proxy , и там вообще нет примеров того, как использовать какие-либо из его методов. Я рассматриваю возможность использования socks5. Вот как выглядит эта функция: func SOCKS5(network, addr string, auth *Auth, forward Dialer) (Dialer, error) Теперь все вроде как.
Вся идея состоит в том, чтобы использовать LXD RESTful API поверх сокета unix для локальных операций. Следующий код хорошо работает один раз для каждых 2 или 3 с ошибками. Я не знаю, связано ли это с node.js или связано с lxd api. Вывод с ошибкой проблема с запросом: напишите EPIPE <[Ошибка.
Похожие вопросы:
OS Manjaro GNU/Linux + NodeJS + диспетчер-прокси . У меня есть два интернет-соединения от двух разных ISPs, и я хочу соединить трафик между этими двумя ISPs. eth0 . 192.168.1.123 подключен к.
Я помогаю другу перенести приложение Parse на выделенный сервер, а не на хостинг-провайдера, и застрял, пытаясь устранить ошибку, которая, как мне кажется, происходит в экземпляре Parse Server на.
Я пытаюсь использовать прокси-сервер SOCKS5, предоставленный PIA ( https://www.privateinternetaccess.com ). я сгенерировал user/pass для SOCKS5 на их сайте, но я не могу использовать эту информацию.
У меня есть приложение, состоящее из сервера node.js плюс другие файлы и файл HTML. Файл HTML — это мой клиент, он должен взаимодействовать с сервером node.js. Сервер node.js использует объекты.
Мы запускаем много параллельных скребков, используя локальные прокси TOR. Итак, есть список прокси-серверов SOCKS5, всего около 200: socks5://localhost:port socks5://localhost:port2.
Поэтому я смотрю на документы net/proxy , и там вообще нет примеров того, как использовать какие-либо из его методов. Я рассматриваю возможность использования socks5. Вот как выглядит эта функция.
Вся идея состоит в том, чтобы использовать LXD RESTful API поверх сокета unix для локальных операций. Следующий код хорошо работает один раз для каждых 2 или 3 с ошибками. Я не знаю, связано ли это.
Я просто практикую некоторый код узла js о child_process @the link моя версия узла-V5.2.0 на windows 7. // master.js var cp=require(child_process); var np=cp.fork(./console.js); // line B // block C.
Я выбираю WinSCP, чтобы реализовать прокси-сервер SOCKS5 в моем клиенте FTP. С закомментированным прокси-сервером я могу подключаться и загружать файлы с сервера FTP без прокси-сервера. Если я.
Источник
Ошибка: записать EPIPE при выводе узла трубопровода на «| голова»
Я наконец-то получил ePipe, и это здорово! — Обзор Ewinvape Epipe F30
У меня проблемы с получением ошибки:
при выводе трубопровода на напор. Вот простой пример:
а потом node test.js | head чтобы получить ошибку, которая появляется примерно в 70% случаев на Ubuntu 12.04. В чем проблема?
В head команда читает только первые несколько строк. Ваш код ожидает, что весь его вывод будет прочитан, и выдает ошибку, если он не может произвести вывод. Если законно отбрасывать выходные данные вашей программы, не рассматривайте это как фатальную ошибку в программе. Если выбросить вывод из вашей программы незаконно, не передавайте его по конвейеру head .
В настоящее время у вас есть состояние гонки. Если head начинает игнорировать ввод до того, как программа завершает запись вывода, программа получает исключение. Если программа завершит запись своего вывода до head начинает игнорировать его ввод, все в порядке.
Как глупое временное решение: node test.js | tee /dev/null | head
Сейчас же, tee заберет весь вывод программы.
- 2 См. Мое обновление ответа. Это состояние гонки. У вас есть две вещи, которые полностью не синхронизируются ( head закрытие входа и test.js завершение вывода) с поведением, которое зависит от того, что происходит первым.
- Спасибо, это имеет смысл
- Это распространено на языках сценариев? Является ли console.log асинхронным в Node и имеет ли это какое-либо отношение к этому?
- @DavidSchwartz относительно «Ваш код ожидает, что весь его вывод будет прочитан, и выдает ошибку, если он не может произвести вывод» — почему программа обязана различать, как другие читают его вывод? Значение, почему должен возникает ошибка? Мне кажется, до тех пор, пока программа выводит всю информацию правильно, то как ее читают другие — это исключительно их забота.
- 1 @aaaaaa Программист может сделать этот выбор и проигнорировать все ошибки, связанные с записью вывода. Но эта конкретная программа не сделала этого выбора. Эта программа рассматривает невозможность записи вывода как фатальную ошибку.
Чтобы изменить программу для успешного выхода в случае закрытого канала, попробуйте:
Источник
Error: write EPIPE #23
Comments
Abhi347 commented Oct 26, 2016
I was using gulp-imagemin before, which worked perfectly, but wanted to give gulp-image a try. But it’s failing with a strange error.
Here’s what I have in my gulpfile.js
I was using the same code with gulp-imagemin which worked properly. Am I doing something wrong?
The text was updated successfully, but these errors were encountered:
sathyalog commented Oct 26, 2016
Even i am facing the same issue. Looking for some help.
tammyhart commented Oct 27, 2016
also getting the same error unless I specify extensions in which case, it only processes .png
anuraag279 commented Nov 3, 2016
ghost commented Nov 4, 2016 •
I’m getting the same as well:
events.js:160
throw er; // Unhandled ‘error’ event
^
Error: write EPIPE
at exports._errnoException (util.js:1026:11)
at WriteWrap.afterWrite (net.js:799:14)
1000ch commented Nov 6, 2016
I cannot reproduce this issue, let me isolate the problem (which envs or settings).
Does anyone upload settings and images that reproduce this?
baacke commented Nov 9, 2016 •
I get the same error unless I remove jpg from the glob or set mozjpeg to false. I haven’t specified any other settings.
Also, the only other thing potentially worth noting about the 1 jpg I have is that now when it runs it says it Cannot improve upon XX.XX KB.
in-in commented Nov 27, 2016
During installation there is an error:
$ uname -a
Linux ubuntu-xenial 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ node -v && npm -v
CoffiDev commented Nov 30, 2016
I’m having the same issue:
Node: 6.9.1
Npm: 3.10.8
In my gulpfile I have:
The error during the installation is:
dkouvdis commented Dec 11, 2016
Temp solution, disable those below.
mozjpeg: false
jpegoptim: false
kamilczujowski commented Feb 7, 2017
any «final» solution?
michaelpumo commented Mar 3, 2017
I’d also like to see a solution to this if possible. Any ideas? JPG optimisation would be great to have.
bertalanimre commented Mar 14, 2017
Also waiting for an aswer. This is frustrating.
1000ch commented Jul 16, 2017
Would you try re-installing jpegoptim-bin? #22 (comment)
evayde commented Nov 29, 2017
I encountered this issue on Debian Stretch (9), while it was working on Jessie and Wheezy.
You have to manually update the bin until there’s another solution.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install jpegoptim
make sure you rename the jpegoptim in your node_modules folder to jpegoptim.bak or something, so you can go back if you want. You can also remove it, of course.
sudo ln -s /usr/bin/jpegoptim /your/node_modules/jpegoptim-bin/vendor/jpegoptim
tomhoad commented Mar 5, 2018
For the record, on MacOS:
brew install libjpeg
npm install —global jpegoptim-bin
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Источник