Open allevo opened 2 years ago
Have you tracked down where that error come from? I don't think it comes from pino-pretty.
you are right.
$ echo 'foo' | pino-pretty
foo
works fine.
so, probable it is a problem of node
itself?
I don't know to be honest. Maybe something in the http-fastify-complete example?
I don't think so
$ node -e 'console.log(666)' | pino-pretty
stdout is not a tty
Does node -e 'console.log(666)'
work?
yes
$ node -e 'console.log(666)'
666
Unfortunately I do not have a windows machine to debug this :(. If it's on pino or pino-pretty, could you send a PR?
seems to be a worse scenario
$ echo 'foo' | node -e 'process.stdin.pipe(process.stout)'
stdin is not a tty
Any suggestion? Just where / how to proceed here: I really don't know if it is a bad stuff on my shell, nodejs problems or others....
I do not believe Bash as delivered by git for Windows is a true posix implementation. I think it is based on Cygwin. You should try LFS for Windows.
I do not believe Bash as delivered by git for Windows is a true posix implementation. I think it is based on Cygwin. You should try LFS for Windows.
I don't understand, sorry. Do you mean LargeFileSystem for Windows? Do you have some links?
This https://docs.microsoft.com/en-us/windows/wsl/about
Windows is a video game OS for me 🤷♂️
Really thanks for your answers. Anyway, with PowerShell all the above commands work fine. So probably, this issue happens only with git bash.
Can I send a PR for updating the documentation? Probably it is better to have a little section for advising people to use right shells (but I don't know what in this case means right....)
Can I send a PR for updating the documentation?
Yes.
using node.exe -e 'console.log(666)' | pino-pretty works just fine https://stackoverflow.com/a/62532536 @mcollina
using node.exe -e 'console.log(666)' | pino-pretty works just fine https://stackoverflow.com/a/62532536 @mcollina
According to the answers in the :point_up: SO thread:
Git bash is establishing some aliases in its
/etc/profile.d/aliases.sh. This includes node which is tested for existing prior to declaring alias node="winpty node.exe". So, node is implicitly run through winpty while node.exe is not.
You can also see it in the actual aliases.sh file
Also git-bash has some issues link more or less to that
I also found that we can run either node
or node.exe
from winpty -Xallow-non-tty
(an undocumented option ) as a workaround, e.g. :
$ winpty -Xallow-non-tty node.exe -e 'console.log(666)' | pino-pretty
666
$ winpty -Xallow-non-tty node -e 'console.log(666)' | pino-pretty
666
I'm considering making a small PR on git-bash
(aka git-for-windows
) for adding -Xallow-non-tty
to the winpty
command in the aliases.sh
to avoid this kind of trouble for all the aliased programs
I spent almost whole day on this. (windows 10, trying to use psql would return stdin is not tty) The only thing that worked for me was to reinstall git and choose Use Windows default console window
As it was suggested on this answer: https://stackoverflow.com/a/52264707/2357318
Ironically is in the same page along with the more popular answer about writing node.exe instead of node (I give that a try too. It wouldn't throw the error but neither would it execute anything).
stdin is not a tty
is almost always the result of _isatty()
returning zero (i.e. not a TTY).
winpty
This has (unfortunately) been a known problem with git-for-windows / bash on Windows: depending on your install options[^1] this may happen.
The work-around is to prefix any command you wish to have a full-fledged TTY with winpty
, e.g.
winpty node -i
Winpty is installed by git-for-windows, so should be available to you in the very shell where you experience this issue.
isatty()
may fail as well!)isatty()
failure; same problem, different effect)exec < /dev/tty
DOES NOT work for me; winpty
DOES and is the generally advertised solution out there.)[^1]: personal experience is that some git-for-windows releases in the past did not exhibit this issue, even when I did not use that 'default console' setting during git-for-windows installation, but insert some handwaving here, as that same devbox environment has seen some weird shit over the years and nobody seems to know how this issue shows up exactly. Anyway, what definitely works is either re-installing git-for-windows with that 'use windows console' config radio button TICKED or using winpty
as the code starter when you need that TTY behaviour you crave. 😉
Hi, I tried to run the below command in git bash under Windows 11 and an error is shown as described below.
In fact the git bash is not a tty as desccribed below.
Is there any change to use pino-pretty in git bash?
Thanks