J'essaie de déboguer mon code TypeScript dans Visual Studio Code, en utilisant l'extension Chrome Debugger, mais le message "Point d'arrêt non vérifié" s'affiche sur mon point d'arrêt et l'exécution ne s'arrête pas sur mon point d'arrêt.
Voici mon fichier launch.json:
{
linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"sourceMaps": true,
"webRoot": "${workspaceFolder}"
}
]
}
Version de l'application:
J'ai lu que si vous avez une version de Chrome inférieure à 59.x
, vous recevrez cette erreur. Si j'ouvre Chrome et navigue vers Settings > Help
, je peux voir que ma version de Chrome est 67.0.3396.99
. Lorsque je navigue vers Help > About
dans Visual Studio Code, la version de Chrome est affichée sous la forme 58.0.3029.110
.
Vous ne savez pas si cela est lié, mais comment puis-je mettre à jour ma version de Chrome affichée dans Visual Studio Code, afin de refléter la version de Chrome appropriée?
D'autres suggestions sur la façon dont je peux résoudre ce problème?
J'ai finalement découvert ce qui n'allait pas:
Quand je lis la définition de '$ {workspaceFolder}', elle dit ceci:
le chemin du dossier ouvert dans VS Code
Mon erreur:
Mon chemin sous Windows vers mon projet était le suivant: C:\Users\myusername\Documents\VSCode\Source\ProjectName
Grâce à Visual Studio Code, le dossier Source
était ouvert et j'avais toujours besoin d'effectuer une commande de changement de répertoire (cd ProjectName) dans Integrated Terminal
en 'ProjectName'. Cela a conduit à la création de .vscode folder and launch.json file
dans le dossier Source
et non dans le dossier ProjectName
.
L'erreur ci-dessus a entraîné le fait que le ${workspaceFolder}
désignait le dossier Source
, dans lequel aucun composant angulaire ne se trouvait, au lieu de pointer vers le dossier ProjectName
.
Le correctif:
Dans Visual Studio Code, ouvrez le dossier: C:\Users\myusername\Documents\VSCode\Source\ProjectName
et configurez mon launch.json
dans ce répertoire.
Ma solution au problème des "points d'arrêt non vérifiés".
Le fichier par défaut .vscode/launch.json créé dans VSC via l'option "Ajouter une configuration" ressemblera à celui-ci (j'ai changé le port de 8080 à 4200).
{
// Use IntelliSense to learn about possible 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": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}"
}]
}
L'ajout d'un élément ci-dessous résout mon problème avec "Point d'arrêt non vérifié".
"sourceMapPathOverrides": {
"*": "${webRoot}/*"
}
.Vscode/launch.json complet et fonctionnel:
{
// Use IntelliSense to learn about possible 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": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}",
"sourceMapPathOverrides": {
"*": "${webRoot}/*"
}
}]
}
Quelques éléments supplémentaires peuvent être ajoutés:
"breakOnLoad": true,
"sourceMaps": true,
Cependant, je n’en ai pas eu besoin dans mon cas pour résoudre le problème.
{
// Use IntelliSense to learn about possible 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": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}",
"breakOnLoad": true,
"sourceMaps": true,
"sourceMapPathOverrides": {
"*": "${webRoot}/*"
}
}]
}
La réponse ci-dessus va probablement résoudre beaucoup de problèmes mais cela n'a pas résolu le mien. Le mien était un problème beaucoup plus simple et plus énervant ...
Les paramètres de configuration du fichier launch.json sont sensibles à la casse.
Mon entrée "webRoot" était correctement orthographiée mais j'avais un B majuscule dans l'un des mots au lieu d'un minuscule b.
Par exemple:
"webRoot": "$ {workspaceFolder}/My .F old"
ne correspondra pas à un dossier de votre espace de travail portant le nom suivant:
Mon .f plus vieux
J'espère que cela aide quelqu'un là-bas.
Dans mon cas, je devais définir la valeur sourceMapPathOverrides
comme ceci:
Fichier launch.json
(contenu dans le dossier .vscode
):
{
// Use IntelliSense to learn about possible 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": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}",
"sourceMaps": true,
"smartStep": true,
"internalConsoleOptions": "openOnSessionStart",
"sourceMapPathOverrides": {
"webpack:///*": "${webRoot}/project/app/*"
}
}
]
}
Ma source est en ${workspaceFolder}/project/app
.
Unverified breakpoint
J'ai trouvé 2 causes à ce problème:
J'avais besoin de définir le bon dossier d'espace de travail .
Avant de déboguer, je devais démarrer mon application Web avec npm start
.
Il y a beaucoup de réponses correctes données. Dans mon cas, une combinaison de toutes ces réponses a aidé et il m'a fallu beaucoup de temps pour le comprendre. J'espère pouvoir vous faire gagner un peu de temps avec le mal de tête, alors
permettez-moi de le résumer étape par étape en vous référant aux réponses ci-dessus, ce qui m'a aidé:
cd
dans le dossier du projet.cd myProject
code .
.vscode
..vscode
est un sous-répertoire de votre dossier de projet.src
, vous y trouverez un dossier .vscode
(comme dans mon cas) contenant des fichiers de configuration inutiles pour le débogage.Configurez une configuration de débogage dans le fichier .vscode\launch.json
.
Assurez-vous que vous avez spécifié le bon port pour votre application, dans mon cas, port 4200
se portait bien.
Assurez-vous également que le paramètre "webRoot"
est configuré correctement (voir la réponse de Stig Perez ). Dans mon cas, il était nécessaire de lui ajouter un sous-dossier. Pour découvrir le chemin spécifié par la variable $(workspaceFolder)
, consultez la question que j'ai posée à StackOverflow concernant l'affichage des valeurs de variable de code de VS. .
Remarque: Si cette configuration n'existe pas encore, procédez comme suit pour l'ajouter: Allez à l'extension de débogage (c'est-à-dire cliquez sur la barre latérale). Dans la liste déroulante de votre débogueur, sélectionnez “Ajouter configuration…”, puis appuyez sur le bouton bleu “Ajouter configuration”. Sélectionnez «Lancer Chrome» comme configuration à ajouter.
Exemple de configuration (launch.json
):
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}/projectsubfolder"
}]
Remplacez projectsubfolder
par le sous-dossier que vous pourriez avoir dans votre projet. Notez que ceci est sensible à la casse (voir la réponse de Michael Walsh ).
Définissez maintenant les points d'arrêt dans votre application.
Pour lancer votre application avec le débogueur, ouvrez une fenêtre de terminal à l'intérieur du code VS, tapez cd projectsubfolder
npm install & ng serve
Cela garantit que les packages dépendants sont résolus et téléchargés avant la compilation de votre application.
Cliquez ensuite sur le triangle vert dans le débogueur du VS, ce qui ouvrira une fenêtre Chrome avec le débogueur attaché.
Je devais supprimer mon dossier .vscode et le régénérer. et aussi le dossier pointait sur le mauvais chemin, je devais le remettre sur mon chemin de dossier actuel. Je vous remercie
Après avoir passé 3 heures précieuses de ma vie et parcouru bon nombre des réponses énumérées ci-dessus, mon problème était aussi simple que de ne pas avoir la ligne suivante dans mon php.ini
:
xdebug.remote_autostart = 1
Avant cela, j'avais déjà configuré XDebug sur mon XAMPP, mais mes points d'arrêt ne seraient tout simplement pas touchés. C'est juste que mon serveur de débogage n'a pas été configuré pour être démarré automatiquement.
J'espère que cela sauve la journée de quelqu'un.
J'ai également rencontré le problème après avoir renommé le dossier du projet. Il s'est avéré que la propriété "webRoot" pointait sur "$ {workspaceFolder}/src" au lieu de "$ {workspaceFolder}". Peut-être que cela faisait partie d'une mise à jour de l'extension "Debugger for Chrome", mais je ne peux pas le vérifier car je n'ai reçu aucune mise à jour.
La mise à jour de "webRoot", le redémarrage de la session ng serve
et le démarrage d'une nouvelle session de débogage ont tout donné. J'espère que cela aidera quelqu'un avec un scénario similaire.
J'avais ouvert dans le code VS my-app dossier où client dossier et serveur dossier était. J'ai dû changer dans launch.json à partir de cela
"webRoot": "${workspaceFolder}"
pour ça
"webRoot": "${workspaceFolder}\\client"
Une autre réponse que je viens de découvrir concerne les modules chargés paresseux.
Si vous souhaitez définir des points d'arrêt dans le code faisant partie d'un module chargé paresseux et que vous n'avez pas chargé ce module dans le navigateur, le code VS n'aura pas accès aux mappes sources pour vérifier les points d'arrêt!
donc, définissez uniquement les points d'arrêt lorsque vous avez chargé le module chargé paresseux que vous souhaitez déboguer!
Dans mon cas, j'avais un fichier main.js à la racine du projet pour une exécution en tant qu'appli électronique. Si ce fichier main.js a été supprimé, le problème a été résolu.
Si vous utilisez le fractionnement de code via Webpack, votre point d'arrêt ne sera pas "vérifié" jusqu'à ce que Chrome charge ce module (c'est-à-dire généralement lorsque vous accédez à cette partie de l'application)
J'obtenais cette erreur simplement parce que je n'avais pas "sourceMaps": true
dans ma configuration de débogage.
La solution pour moi a été d’ajouter au fichier launch.json la ligne suivante: "requireExactSource": false. Après cela, redémarrez VSC et essayez si cela fonctionne.
npm i
l'a corrigé pour ma part. J'ai parfois des points d'arrêt non vérifiés lors de la création d'un nouveau dossier/fichier, et c'est généralement ce qui se passe.
Si tout semble configuré correctement mais que le point d'arrêt ne soit toujours pas touché, la modification que je devais apporter consistait à spécifier le nom de fichier exact à servir. Par exemple, sur NodeJS, Express ne fait que spécifier localhost:3000
ne s’arrêtera pas sur mes points d’arrêt, mais spécifier localhost:3000/index.html
fonctionnera comme prévu.
Configuration complète:
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 également 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 définir les paramètres dans VSCode et activer: Autoriser les points d'arrêt partout.
Dans mon cas, le problème était que le point d'arrêt était défini sur une ligne dans laquelle une fonction était déclarée.
openDetails(data: Asset) { <-- The break point was here
this.datailsOpen = true;
this.currentAsset = data;
}
Solution: déplacez-le vers l'intérieur du corps de la fonction
openDetails(data: Asset) {
this.datailsOpen = true; <-- Move the break point here
this.currentAsset = data;
}
Mon problème était que le mappage de source n'était pas configuré correctement. Assurez-vous que vos sources TS réelles sont visibles dans l'onglet Sources des extensions de débogage de Chrome et essayez de placer vos points d'arrêt au préalable. Cela aidera peut-être quelqu'un.