突然、私のコードはコンパイルされず、tscは「名前gが現在のスコープに存在しません」と文句を言います。これは本当に面白いエラーです:
- 私のコードのどこにも「g」という名前の変数、クラス、またはインターフェースはありません
- 「g」という名前のモジュールをインポートしていません
- ファイル自体は「g」という名前ではありません
ここにいくつかのコードがあります:
export class SpawnMessage implements Message {
tag: UID;
id: number;
}
VisualStudioは、「エクスポート」の「e」を赤で強調し、「名前gがない」と文句を言います。同じエラーメッセージが、コード全体の最も特殊な場所に散らばっています。
さて、gがとても重要なら、私はそれを作成するだけだと思いました。コードの先頭にgという名前の変数を追加しました。エラーメッセージは消えず、移動しただけです。たとえば、私のコメントの1つが明らかに間違っています。本当に、誰かがそれについて私に言ったら、私はこれを信じないでしょう、それで私はスクリーンショットを作りました:![gは存在しません] [1]
VisualStudioだけでなくtscでもあります。IDEとシェルを再起動しましたが、エラーが解決しません。当然、また場所が変わりました。
何が悪かったのか ?
更新:エクスポートインポートステートメントを修正しましたが、エラーには影響しませんでした。これがjsfiddleのファイル全体です。コードはかなり醜いです、これは進行中の作業であることを覚えておいてください。実際のところ、エラーが表示されてからファイルに触れていないため、リファクタリングを行っていました。
現在、エラーは次の3つの場所で見つかります。
Message
インターフェイスの閉じ中括弧- のコンストラクタの最後の行の等号
SpawnMessage
requestSpawn
クラス内のメソッドのreturnステートメントの前にある空白Game
更新2: VisualStudioとコマンドプロンプトの両方を再起動しました。エラーが解決しませんでした。その後、コンピュータを再起動しましたが、エラーはまだ残っていました。あなたは私が必死だったことがわかります。そのため、すべてをgithubにプッシュし、ローカルコピーを削除して、リポジトリのクローンを再度作成しました。エラーはなくなりました。これはまったく同じコードであり、まったく同じコンパイラです。それは私のドライブの同じパスですが、tscはコードをコンパイルします。
本当に物足りないので、自分の質問への回答として投稿しません。この奇妙な振る舞いを説明できる人がいれば、それは既知のバグかもしれませんが、私は喜んで彼の答えを受け入れます。