Pour passer des arguments de ligne de commande à un programme Node.js lorsque vous le déboguez sur un Mac, ajoutez un tableau args à sa configuration de lancement VS Code. Placez chaque argument dans sa propre chaîne, puis démarrez cette configuration avec F5. Cela transmet les valeurs directement au programme ; zsh n'interprète pas le tableau comme une commande shell.

Ajouter un tableau args à launch.json

Ouvrez le dossier du projet dans VS Code. S'il ne possède pas encore de configuration de lancement, ouvrez Exécuter et déboguer avec ⇧⌘D, choisissez créer un fichier launch.json, et sélectionnez le débogueur correspondant à votre environnement d'exécution. VS Code enregistre une configuration d'espace de travail dans .vscode/launch.json. Une requête launch démarre un nouveau processus ; une requête attach se connecte à un processus déjà en cours d'exécution. Utilisez donc launch lorsque VS Code doit démarrer le programme avec vos arguments. Configure debugging in Visual Studio Code

Pour cet exemple concret, supposons que l'espace de travail contienne app.js, et que vous souhaitiez l'exécuter avec --input suivi d'un chemin de fichier pouvant comporter des espaces, plus un indicateur --verbose. Ajoutez ou adaptez cette configuration à l'intérieur du tableau configurations :

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Debug app with input file",
      "program": "${workspaceFolder}/app.js",
      "cwd": "${workspaceFolder}",
      "args": [
        "--input",
        "${workspaceFolder}/data files/input.txt",
        "--verbose"
      ]
    }
  ]
}

Choisissez Debug app with input file dans le sélecteur de configuration Exécuter et déboguer, puis appuyez sur F5. program identifie le point d'entrée JavaScript, cwd définit le répertoire de travail, et args fournit les valeurs de ligne de commande supplémentaires. L'extension du débogueur définit les propriétés prises en charge pour chaque environnement d'exécution ; consultez IntelliSense dans launch.json si vous utilisez un débogueur différent ou si vous constatez une erreur de validation. Configure debugging in Visual Studio Code

Conserver les espaces et les caractères spéciaux intacts

Dans un tableau args, chaque élément correspond à un argument. La documentation de VS Code précise qu'un chemin contenant des espaces reste une chaîne unique après la substitution des variables. Par conséquent, le chemin de fichier de l'exemple constitue un seul argument ; n'ajoutez pas de guillemets d'échappement autour de celui-ci simplement pour préserver l'espace. ${workspaceFolder} se résout par le dossier ouvert dans VS Code, ce qui maintient le chemin lié au projet. Variables reference

Cela diffère de la saisie d'une commande dans le Terminal. macOS utilise zsh comme shell par défaut du Terminal, mais le tableau args de la configuration de lancement représente les arguments destinés au processus cible. Les éléments de syntaxe shell comme *, >, ou | ne sont pas automatiquement développés ou exécutés ici. Par exemple, si votre programme attend la valeur littérale a&b.txt, écrivez-la comme une seule chaîne JSON : "a&b.txt". Pour l'expansion de shell ou la redirection, la cible doit être explicitement exécutée via un shell, et le comportement exact dépend de l'extension du débogueur ; VS Code indique qu'il n'existe pas de syntaxe de redirection universelle pour toutes les configurations de débogage. Apple : Modifier le shell par défaut dans Terminal sur Mac et Configure debugging in Visual Studio Code

Confirmer ce que reçoit le programme

Pour Node.js, le processus expose les arguments de lancement via process.argv. Les premières entrées représentent l'exécutable Node et le chemin du script ; les entrées restantes correspondent aux valeurs supplémentaires. Pour les inspecter temporairement, ajoutez ceci à app.js :

console.log(process.argv);

Avec la configuration d'exemple, la sortie devrait inclure --input, le chemin résolu se terminant par data files/input.txt, et --verbose sous forme d'entrées distinctes. C'est un moyen pratique de déterminer si un problème provient de la configuration de VS Code ou de l'analyse des arguments par le programme. Supprimez ou adaptez la sortie de diagnostic une fois que vous avez confirmé les valeurs. Node.js: Process

Demander une valeur à chaque débogage

Si la valeur change entre les exécutions, VS Code prend en charge les variables d'entrée promptString dans launch.json. Ajoutez un tableau inputs au même niveau supérieur que configurations, puis référencez cette entrée dans args :

"args": ["--input", "${input:inputFile}"],
"inputs": [
  {
    "id": "inputFile",
    "type": "promptString",
    "description": "Path to the input file",
    "default": "data files/input.txt"
  }
]

L'invite renvoie une chaîne, qui est injectée dans l'élément d'argument. Cela est utile pour une valeur simple propre à chaque exécution. L'imbrication de variables d'entrée n'est pas prise en charge, et l'invite de saisie n'analyse pas une ligne de commande shell en arguments multiples. Si vous avez besoin de plusieurs valeurs, définissez plusieurs éléments de tableau ou utilisez une approche plus adaptée spécifique au débogueur. Variables reference

Résoudre les problèmes d'arguments apparemment manquants

Vérifiez d'abord que la bonne configuration est sélectionnée et que la requête est bien launch. Vérifiez ensuite que la liste d'arguments se trouve dans la propriété args prise en charge par le débogueur, que ses virgules et guillemets forment un JSON valide, et que votre programme attend ces valeurs dans l'ordre fourni. Vérifiez également cwd : un chemin relatif est interprété par le programme par rapport à son répertoire de travail, tandis que ${workspaceFolder} fournit un point de départ à la racine du projet. VS Code recommande de vérifier program, cwd, args ainsi que les propriétés prises en charge par le débogueur sélectionné lorsqu'un lancement ne se comporte pas comme prévu. Configure debugging in Visual Studio Code

Pour une session de débogage reproductible sur Mac, stockez les arguments dans la configuration de lancement de l'espace de travail, utilisez un élément de tableau JSON par valeur souhaitée et examinez ce que votre environnement d'exécution reçoit réellement. Traitez la protection par guillemets du shell comme une question distincte : elle s'applique lorsqu'un shell analyse une commande, tandis que args est une configuration destinée au programme lancé.

Sources