J'essaie de déboguer une application Node/Express TypeScript dans VS Code (version 1.24.0) et tous mes points d'arrêt sont grisés lors du débogage.
L'erreur est "Point d'arrêt non vérifié, points d'arrêt définis mais non encore liés". J'ai cherché mais je ne peux pas comprendre ce qui ne va pas avec ma configuration. Il n'y a pas d'erreur dans la console, le débogueur s'attache correctement lorsque je choisis le processus, mais les points d'arrêt ne fonctionnent pas.
Comment puis-je déboguer cela?
structure de base des dossiers:
/.vscode
/src/server.ts
/dist/server.js
launch.json
tsconfig.json
launch.json
{
"type": "node",
"request": "attach",
"name": "Attach by Process ID",
"processId": "${command:PickProcess}",
"protocol": "inspector",
"address": "localhost",
"port": 8080,
"restart": true,
"preLaunchTask": "npm: build",
"sourceMaps": true,
"outFiles" : [ "${workspaceFolder}/dist/**/*.js" ]
},
tsconfig.json
{
"compilerOptions": {
"alwaysStrict": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"target": "es6",
"outDir": "dist",
"rootDir": "src",
"sourceMap": true,
"typeRoots": [ "node_modules/@types" ]
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
]
}
tasks.json
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "build",
"group": {
"kind": "build",
"isDefault": true
}
} ]
Pour tous ceux qui rencontrent cette erreur, j'ai pu trouver une solution. Le problème était la façon dont j'ai lancé le processus de nœud, pas la cartographie des cartes source (qui produit une erreur différente).
Pour attacher au processus, je l'ai lancé à partir du terminal VS Code comme ceci:
node --inspect dist/server.js
launch.json:
{
"type": "node",
"request": "attach",
"name": "Attach by Process ID",
"processId": "${command:PickProcess}",
"protocol": "inspector",
"address": "localhost",
"port": 8080,
"restart": true,
"preLaunchTask": "npm: build",
"sourceMaps": true,
"outFiles" : [ "${workspaceRoot}/dist/**/*.js" ]
},
Je trouvais que tous les points d’arrêt que j’essayais de définir dans un fichier présentaient le même problème, mais non du reste.
Je nommais le fichier dispatcher.js avec une minuscule, mais je le tirais dans le noeud avec:
const { Dispatcher } = require('./Dispatcher')
et le contenu était une classe javascript exportée en tant que:
module.exports = { Dispatcher }
J'ai eu ce problème aujourd'hui, j'ai essayé de reconstruire et de relancer le débogueur. J'ai fermé toutes les instances de code VS et redémarré, en travaillant maintenant.
J'ai rencontré ce problème en utilisant vscode 1.25
Il semble que cela soit déclenché lorsqu'une source contenant un point d'arrêt (.ts) est modifiée pendant que la session de débogage est en cours d'exécution. Les points d'arrêt peuvent être réactivés en réenregistrant la source ou en modifiant à nouveau le point d'arrêt.
Toutefois, si la source a été modifiée, le débogage doit être redémarré pour être synchronisé avec la source.
Ce problème semble également se répercuter sur le mode Édition, les points d'arrêt demeureraient "non vérifiés" même après avoir quitté le mode débogage. Encore une fois, la ré-enregistrement de la source semble réactiver les points d'arrêt dans ce cas.
Je courais dans un problème identique; si une erreur était présente, le débogueur signalerait l'erreur, mais si aucune erreur ne se produisait, il ne s'arrêterait pas sur les points d'arrêt. La modification résolue pour moi a été de spécifier le nom de fichier exact qui serait servi plutôt que simplement localhost. Par exemple, sur NodeJS, Express ne fait que spécifier localhost:3000
ne s'arrête pas sur mes points d'arrêt, mais spécifier localhost:3000/index.html
fonctionne comme prévu.
Configuration complète qui s'arrête sur les points d'arrêt comme prévu (à ce jour):
Mon dossier est ouvert dans le VSCode: learningPixi
avec l'emplacement du dossier complet (Ubuntu Linux): /home/leigh/node/pixi-tut/learningPixi
Ma structure de dossier est:
/home/leigh/node/pixi-tut/learningPixi/.vscode/launch.json
/home/leigh/node/pixi-tut/learningPixi/public/index.html
/home/leigh/node/pixi-tut/learningPixi/server.js
Contenu de mon fichier launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:3000/index.html",
"webRoot": "${workspaceFolder}/public",
"skipFiles": ["pixi.min.js"]
}
]
}
"skipFiles" était aussi très utile, sinon le débogueur introduit chaque appel de fonction
Ma configuration de serveur express (très basique) destinée uniquement au débogage de JavaScript dans des fichiers statiques était la suivante:
const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, '/public')));
app.listen(3000, () => console.log('App started on port 3000'));
Et selon la structure de dossier ci-dessus, assurez-vous que index.html se trouve dans/dossier public.
Si vous déboguez du code JavaScript à partir d'un fichier HTML, vous devrez peut-être également accéder aux paramètres de VSCode et activer: Autoriser les points d'arrêt partout.