チャレンジへのリンク:
https://www.freecodecamp.com/challenges/using-objects-for-lookups
このチャレンジでは、switchステートメントのオブジェクトバージョンを作成する必要がありました。 オブジェクトバージョンを作成するには、switch_の各_'case 'メンバーを覚えておく必要があったため、スイッチ部分全体をコメントアウトして、正しいオブジェクトバージョンを再入力しました。
しかし、私はテストに合格することができませんでした。
これはのテストチェックによるものですYou should not use case, switch, or if statements
スイッチをコメントアウトする際に、_switch_の使用法を検証してはならず、コメントと見なす必要があります。
// 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はい、これはメインWebサイトの既存の問題として認識されており、可能であれば、厳密なパーサーを持つためのインフラストラクチャが不足しています。
現在のところ唯一の方法は、コメントを削除して先に進むことです。
潜在的な貢献者、これはこのあたりで調査する必要があります:
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16
/ cc @BerkeleyTrue
Basic Javascriptの最初のチャレンジで、コメントしようとしたときに同様の問題が発生しました。
// 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 */
この場合、2番目のコメントで「関数」という単語を使用しているため、次のようになります。
Error: SyntaxError: Unsafe or unfinished function declaration
たぶんためのテスト実行中のcontents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,''))
の代わりにcontents
その問題を解決するだろうか? (私の場合、コメントを置き換えた後、コンテンツが空であるため、この特定のテストはまだ失敗するため、一般的な問題を意味します)
次のようなことはできません:
Node node = nodeList.item(i);
if(node.getNodeType() == Node.COMMENT_NODE) {
continue;
} else {
//do something
}
これを引き受けたいと思います。
私はこの問題に興味があります。これを私に割り当てることができ、変更が必要なファイルに私を導くことができます。
これについては1週間以上更新がないので、取り上げます。 @ Survivor75と@ knrt10の皆さん、大丈夫だといいのですが
@raisedadead :解決策は私たちが考えていたよりもずっと簡単だと思います。
文字列であるcode
アサーションを実行します。 では、検証に使用する前に、この文字列に対して正規表現を実行してコメントを削除しないのはなぜですか?
たとえば、- client/frame-runner.js
では、次のようなコードミラーエディタのコンテンツをフェッチします。
const editor = { getValue() { return source; } };
const code = source;
コードをそのまま渡す代わりに、正規表現を実行して次のようなコメントを削除します。
const editor = { getValue() { return source; } };
const code = source.replace(/\/\*[\s\S]*?\*\/|[^\S]\/\/.*$/gm, '');
このようにすると、テストランナーはコードでコメントを受け取ることはなく、すべて問題ありません。
ここでこの正規表現を検証しました-http://regexr.com/3ghvi
注意:
//
につながる文字を置き換えるため、独自の行に存在しないインラインコメントは置き換えません。@adityaparabそのクール:+1
何か他のことに従事したので、私はそれをほとんど忘れていました。
しかし、私はこのコードを思いついたので、これに取り組むつもりなら、以下の関数を見てください。
function stripComments ( code ) {
return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ;
}
これにより、コメントされたコードが削除されます:)
残念ながら、ここでの唯一の実際の解決策は、テストにASTを使用することです。 これについては、 @ QuincyLarsonと、babelによって生成されたJS ASTを公開するAPIを追加し、eslintのプラグインインターフェイスに類似したAPIを追加することについて話し合いました。 優先順位はreactチャレンジに進み、チャレンジ自体がファイルからインポートされる方法を一般化することであるため、これは少しずれている可能性があります。
「関数」という単語を含むコメントでこの問題に遭遇しました...フォーラムの誰かが何が起こっているのかを説明するまで、私は本当に混乱しました。 この問題がすぐに修正されることを願っています! おそらく、チャレンジのコメントに関するパーサーの問題についてユーザーに警告するメッセージが表示されるはずですか?
参照:
https://forum.freecodecamp.org/t/javascript-tests-in-challenges-no-longer-working-correctly/190249
@SuperGeniusZebこれを報告し、それを再現する手順を確認していただきありがとうございます。
この問題は最近アクティブになっていないため、古いものとしてクローズします。 これがまだ新しく更新されたプラットフォームに関連していると思われる場合は、その理由を説明してから、再度開いてください。
@QuincyLarson
更新されたサイトでは、チャレンジテストによってコメントがコードとして誤って読み取られています。 この課題を例にとってみましょう。
次のコードを使用すると、 grid-column-gap: 20px
がコメントに含まれていても、テストに合格できます( grid-column-gap
が20px
設定されているかどうかを確認します)。
<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>
この号を再度開いてください。
@SuperGeniusZebhttps://github.com/freeCodeCamp/learn/issuesで新しい問題を開いていただけますか? どうもありがとう。
@raisedadeadそこで新しい問題を作成しました:
https://github.com/freeCodeCamp/learn/issues/165
最も参考になるコメント
@ Saif-Shinesはい、これはメインWebサイトの既存の問題として認識されており、可能であれば、厳密なパーサーを持つためのインフラストラクチャが不足しています。
現在のところ唯一の方法は、コメントを削除して先に進むことです。