J'ai une commande shell qui fonctionne bien dans le terminal mais quand il est exécuté par les erreurs child_process
du nœud.Comportement de tuyau bizarre dans le child_process du noeud?
Voici la commande telle qu'elle est utilisée dans le terminal (file.json est un fichier JSON):
cat /tmp/file.json | jq
Voici exécute la même commande à partir child_process
:
var cp = require("child_process");
var command = "cat /tmp/gen_json | jq";
cp.exec(command, function(err, stdout, stderr) {
stderr ? console.log(stderr) : console.log(stdout);
});
qui produit:
jq - commandline JSON processor [version 1.5-1-a5b5cbe]
Usage: jq [options] <jq filter> [file...]
jq is a tool for processing JSON inputs, applying the
given filter to its JSON text inputs and producing the
...
Ceci est le message par défaut qui s'affiche lors de l'exécution de jq
. C'est comme si je courais jq
sans le tuyau précédent.
Non liée au comportement de conduite, mais vous ne avez pas besoin 'cat' ici (Si c'est la vraie commande que vous exécutez). Essayez 'jq '..filtre ..'/tmp/fichier.json'. – randomir
@randomir dans mon cas j'ai besoin de 'cat' parce que si je lance' jq/tmp/fichier.json' il casse avec 'inattendu '/''. Je ne reçois pas cette erreur quand je laisse 'cat' analyser le fichier avant' jq'. (question mise à jour avec pastebin à json) –
On dirait que 'jq' attend un filtre obligatoire, Essayez:' cat file | jq '.' Cela résout votre autre problème, aussi: 'jq '.' fichier ». – randomir