web-dev-qa-db-fra.com

Exécution d'un projet NodeJS dans Visual Studio Code avec fil

J'ai un projet NodeJS que je peux démarrer en ligne de commande avec la commande yarn start. Mon package.json ressemble à ceci:

{
  "name": "projectname",
  "version": "0.0.1",
  "description": "",
  "author": "My Name",
  "license": "",
  "scripts": {
    "start": "yarn dev",
    "dev": "yarn stop && pm2 start pm2-dev.yaml && webpack-dev-server --progress",
    "prod": "yarn stop && yarn build && pm2 start pm2-prod.yaml",
    "build": "rimraf dist lib && babel src -d lib --ignore test.js && cross-env NODE_ENV=production webpack -p --progress",
    "stop": "rimraf logs/* && pm2 delete all || true"
  },
  "dependencies": {
    "body-parser": "~1.16.0",
    "ejs": "2.5.5",
    "express": "^4.14.1",
    "pg": "^6.1.2",
    "react": "^15.4.2",
    "redux": "^3.6.0",
  },
  "devDependencies": {
    "babel-cli": "^6.22.2",
    "cross-env": "^3.1.4",
    "eslint": "^3.13.0",
    "pm2": "^2.3.0",
    "redux-mock-store": "^1.2.2",
    "rimraf": "^2.5.4",
    "webpack": "^2.2.1",
    "webpack-dev-server": "^2.2.1"
  }
}

J'essaie de démarrer ce projet en mode débogage avec Visual Studio Code mais avec presque pas de chance. J'ai défini ma configuration de lancement dans le fichier VS Code launch.json comme ceci:

{
  // Use IntelliSense to learn about possible Node.js debug attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "yarn",
      "runtimeExecutable": "yarn",
      "runtimeArgs": [
        "start"
      ],
      "port": 5858,
      "cwd": "${workspaceRoot}",
      "timeout": 10000
    }
  ]
}

Le problème avec cette configuration est qu’elle expire généralement parce que webpack-dev-server build est plus long que 10 secondes. Je peux augmenter la timeout dans ma configuration, mais j'ai remarqué que les résultats du code VS avec un message Cannot connect to runtime process (timeout after 30000 ms). finissent par être, alors je suppose que ce n'est pas une bonne solution. De plus, mes points d'arrêt sont ignorés avec ce type de configuration qui me dit que je ne fais vraiment pas quelque chose de mal ici.

C’est la première fois que je teste le code Visual Studio et je n’utilise généralement pas NodeJS, mais j’ai ce projet avec tous ces scripts au format package.json déjà défini; pour l'exécuter correctement.

Visual Studio Code peut-il exécuter un projet comme celui-ci avec une fonctionnalité de débogage complète, et si oui, comment dois-je configurer mon script de lancement?

14
errata

Je ne peux pas répondre spécifiquement aux parties de la question relatives au WebPack. Cependant, votre script ci-dessus ne fonctionnera pas car vous n'avez pas activé le débogage. Exposer le débogage permet à un débogueur de s’attacher à ce processus et bloque également l’exécution du programme jusqu’à ce qu’un débogueur s’attache. Vous devrez créer un autre script dans votre package.json qui permette le débogage. Ensuite, vous pouvez utiliser votre script spécifique au débogage pour déboguer et votre script de non-débogage pour s'exécuter normalement. Par exemple:

  "scripts": {
    "start": "yarn dev",
    "dev": "node entry.js",
    "dev-debug": "node --inspect-brk=5858 entry.js",

Ensuite, dans votre launch.json, remplacez "start" par "dev-debug". Le port de débogage est déjà défini sur 5858 dans les fichiers launch.json et package.json, cela devrait donc fonctionner. La clé exécute le noeud avec la commande --inspect-brk, forçant l'exécution de l'application du noeud à s'arrêter jusqu'à ce qu'un débogueur s'y attache.

1
Joe B.