lien pour le défi:
https://www.freecodecamp.com/challenges/using-objects-for-lookups
Dans ce défi, j'ai dû produire une version objet , j'avais commenté toute la partie switch et retapé la version correcte de l'objet.
Cependant, je n'ai pas réussi à passer le test.
Cela est dû au test de vérification de
You should not use case, switch, or if statements
Lors de la mise en commentaire du commutateur, il ne doit pas valider l'utilisation de _switch_ et le considérer comme un commentaire.
// Setup
function phoneticLookup(val) {
var result = "";
// Only change code below this line
var lookup = {
"alpha":"Adams",
"bravo":"Boston",
"charlie":"Chicago",
"delta":"Denver",
"echo":"Easy",
"foxtrot":"Frank"
};
result = lookup[val];
/*
switch(val) {
case "alpha":
result = "Adams";
break;
case "bravo":
result = "Boston";
break;
case "charlie":
result = "Chicago";
break;
case "delta":
result = "Denver";
break;
case "echo":
result = "Easy";
break;
case "foxtrot":
result = "Frank";
}
*/
// Only change code above this line
return result;
}
// Change this value to test
phoneticLookup("charlie");
@ Saif-Shines Oui, nous sommes conscients de cela comme un problème existant sur le site Web principal, et nous n'avons pas l'infrastructure nécessaire pour avoir un analyseur strict si vous le pouvez.
Le seul moyen actuellement serait d'aller de l'avant en supprimant les commentaires.
Contributeurs potentiels, cela doit être étudié ici:
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16
/ cc @BerkeleyTrue
Lors du tout premier défi de Basic Javascript, j'ai rencontré un problème similaire en essayant de commenter:
// Use comments only when they are actually needed
/* Sometimes, using descriptive names for variables and functions is way better
than leaving code smell all over your code */
Dans ce cas, parce que dans mon deuxième commentaire j'utilise le mot «fonction», je lancerais:
Error: SyntaxError: Unsafe or unfinished function declaration
Peut-être que l'exécution de tests pour contents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,''))
au lieu de contents
pourrait résoudre ce problème? (c'est-à-dire le problème général, car dans mon cas, ce test spécifique échouerait toujours en raison du contenu vide après le remplacement des commentaires)
Ne pouvons-nous pas faire quelque chose comme:
Node node = nodeList.item(i);
if(node.getNodeType() == Node.COMMENT_NODE) {
continue;
} else {
//do something
}
Je voudrais aborder cette question.
Je suis intéressé par ce problème, peut-il m'être attribué et pouvez-vous me diriger vers les fichiers à modifier.
Puisqu'il n'y a pas de mise à jour à ce sujet dans plus d'une semaine, je vais en parler. J'espère que tout va bien avec vous les gars @ Survivor75 et @ knrt10
@raisedadead : Je pense que la solution est bien plus simple que nous ne le pensions.
Nous exécutons des assertions sur code
qui est une chaîne. Alors pourquoi ne pas simplement exécuter une expression régulière sur cette chaîne et supprimer les commentaires avant qu'elle ne soit utilisée pour la validation?
Par exemple dans - client/frame-runner.js
, nous récupérons le contenu de l'éditeur de codemirror comme
const editor = { getValue() { return source; } };
const code = source;
Au lieu de passer directement le code tel quel, j'exécuterais une regex pour se débarrasser des commentaires comme
const editor = { getValue() { return source; } };
const code = source.replace(/\/\*[\s\S]*?\*\/|[^\S]\/\/.*$/gm, '');
Lorsque cela est fait de cette façon, le testeur ne reçoit jamais les commentaires dans le code et tout va bien.
J'ai validé cette regex ici - http://regexr.com/3ghvi
REMARQUE:
//
nous ne remplaçons pas les commentaires en ligne qui n'existent pas sur leurs propres lignes.@adityaparab c'est cool: +1
J'en ai presque oublié car je me suis engagé dans autre chose.
Cependant, je suis venu avec ce code, si vous allez travailler dessus, jetez un œil à la fonction ci-dessous.
function stripComments ( code ) {
return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ;
}
Cela supprimera tout code commenté :)
Malheureusement, la seule vraie solution ici est d'utiliser les AST pour les tests. J'ai discuté de cela avec @QuincyLarson à propos de l'ajout d'une API qui expose le JS AST produit par babel et d'ajouter une API similaire à l'interface du plugin eslint. Cela peut être un peu décevant car la priorité est de passer aux défis de réaction, puis de généraliser la façon dont les défis eux-mêmes sont importés à partir de fichiers.
Je viens de rencontrer ce problème avec des commentaires contenant le mot «fonction» ... Je suis devenu vraiment confus jusqu'à ce que quelqu'un sur les forums explique ce qui se passait. J'espère que ce problème sera bientôt résolu! Peut-être qu'un message devrait-il être affiché aux utilisateurs pour les avertir des problèmes d'analyseur concernant les commentaires dans les défis?
Voir également:
https://forum.freecodecamp.org/t/javascript-tests-in-challenges-no-longer-working-correctly/190249
@SuperGeniusZeb Merci d'avoir signalé cela et d'avoir confirmé les étapes pour le reproduire.
Je ferme ce problème comme périmé car il n'a pas été actif ces derniers temps. Si vous pensez que cela est toujours pertinent pour la plate-forme récemment mise à jour, veuillez expliquer pourquoi, puis rouvrez-la.
@QuincyLarson
Dans le site mis à jour, les commentaires sont toujours lus par erreur comme du code par les tests de défi. Prenez ce défi par exemple:
En utilisant le code suivant, je peux passer le test (qui vérifie que grid-column-gap
doit être défini sur 20px
), même si grid-column-gap: 20px
est dans un commentaire.
<style>
.d1{background:LightSkyBlue;}
.d2{background:LightSalmon;}
.d3{background:PaleTurquoise;}
.d4{background:LightPink;}
.d5{background:PaleGreen;}
.container {
font-size: 40px;
min-height: 300px;
width: 100%;
background: LightGray;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
/* add your code below this line */
grid-column-gap: 10px;
// grid-column-gap: 20px;
/* add your code above this line */
}
</style>
<div class="container">
<div class="d1">1</div>
<div class="d2">2</div>
<div class="d3">3</div>
<div class="d4">4</div>
<div class="d5">5</div>
</div>
Veuillez rouvrir ce numéro.
@SuperGeniusZeb Pouvez-vous ouvrir un nouveau numéro sur https://github.com/freeCodeCamp/learn/issues ? Merci beaucoup.
@raisedadead Je viens de créer un nouveau numéro là-bas:
https://github.com/freeCodeCamp/learn/issues/165
Commentaire le plus utile
@ Saif-Shines Oui, nous sommes conscients de cela comme un problème existant sur le site Web principal, et nous n'avons pas l'infrastructure nécessaire pour avoir un analyseur strict si vous le pouvez.
Le seul moyen actuellement serait d'aller de l'avant en supprimant les commentaires.