Je pense que ce serait simple, mais ce qui suit ne fonctionne pas comme prévu.Node.js passe le texte en tant que stdin de `spawnSync`
Je veux acheminer des données vers un processus, disons (juste une commande arbitraire pour l'illustration) wc
, depuis le nœud.
Le docs et d'autres SO questions semblent indiquer que le passage d'un flux devrait fonctionner:
const {spawnSync} = require('child_process')
const {Readable} = require('stream')
const textStream = new Readable()
textStream.push("one two three")
textStream.push(null)
const stdio = [textStream, process.stdout, process.stderr]
spawnSync('wc', ["-c"], { stdio })
Malheureusement cela jette une erreur:
The value "Readable { ... } is invalid for option "stdio"
Le relevant bit of code from internal/child_process.js
ne révèle pas quelles sont les options valides prévues sont.
C'est assez intriguant! J'ai seulement réussi à le faire fonctionner en passant directement des données à l'option 'input' au lieu de réaffecter' stdin'. –
_ "Notez que le flux doit avoir un descripteur sous-jacent" _. Je ne pense pas que votre 'textStream' en ait un. – robertklep
Merci @robertklep - Je l'ai noté aussi; De tout ce que j'ai lu, il n'est pas clair pourquoi un descripteur est nécessaire, comment il est implémenté/différencié d'un flux régulier, ou en tout cas comment on travaille autour de lui. C'est une exigence étrange et apparemment arbitraire. –