TypeScriptコンパイルでの実験的なデコレータ警告


249

警告が表示されます...

デコレータの実験的なサポートは、将来のリリースで変更される可能性がある機能です。この警告を削除するには、「experimentalDecorators」オプションを設定します。

... tsconfig.jsonのcompilerOptionsには次の設定がありますが:

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

奇妙なのは、デコレータを使用する一部のランダムクラスはその警告を表示しないが、同じプロジェクトの残りのクラスは表示することです。

TypeScriptコンパイラでこのような動作を引き起こす原因は何ですか?


19
VS Codeを再起動してみましたか?tsconfig.jsonを時々変更した後で、それが必要であることがわかりました。
David Sherret 16

2
あなたは一撃の答えの男を試すことができます。それは私のために働きます!stackoverflow.com/a/38970591/2468781
eildiz

10
たまたま、VS CodeではなくVS Professionalを使用している誰かがこれに遭遇した場合、.ts手動で角度のプロジェクトにファイルを追加した可能性があります。その場合、デフォルトのTSコンパイルはAngular CLIと競合しています。ファイルを右クリック->プロパティ->ビルドアクション:なし。次に、必要に応じてVSを再起動します。
pbarranis

2
VSコードの再起動は、問題の解決に役立ちました。
CMA

4
code .誤ったディレクトリでVSCode()を起動してしまいました。すべてが問題ないように見えました-私はすべてのファイルを見て編集できました-それで、最初は何も「間違っている」ことに気づきませんでした。しかし、私はその愚かな "実験的なデコレータ"の警告を1つだけ受け取りました。-角度コンポーネント。VSCodeを終了code .し、正しいディレクトリ(私のAngularプロジェクトルート)で再起動(もう一度)すると、警告が消えました。
paulsm4

回答:


220

VS CodeはTypeScriptプロジェクトの優れたエディターですが、時々キックが必要です。多くの場合、警告なしに、特定のファイルが原因で異常な状態になり、不平を言います。ほとんどの場合、修正は、開いてtsconfig.jsonいるすべてのファイルを保存して閉じてから開くことです。その後、問題のあるファイルをエラーなしで再び開くことができるはずです。うまくいかない場合は、泡立て、すすぎ、繰り返します。

tsconfig.jsonfiles配列を使用してソースファイルを指定した場合、IntelliSenseは、問題のファイルが参照されていて、VS Codeが入力ファイルツリーをトラバースしてファイルを見つけられる場合にのみ、正しく機能します。

編集:「ウィンドウの再読み込み」コマンド(今から何年も前に追加されました)は、この問題を一度に解決するはずです。


5
ありがとう-tsconfig.jsonから「ファイル」を削除して問題を解決
bensiu

4
答えは私のケースにはあまり関係がありませんでしたが、どういうわけか私の問題を理解するのに役立ちました。私はVS 2015を使用していて、xprojtsconfigファイルを変更する間に、スクリプトファイルのあるフォルダーがのexcludeセクションにリストされているという事実を見逃しましたtsconfig。これが誰かを助けることを願っています。
Stefan Balan 2016

18
[ファイル]> [フォルダを閉じる]> [フォルダを開く]が機能しました。これは、vscodeを適切に閉じずにマシンを再起動した後に発生しました。
Adrian Moisa 2017年

3
typescriptを使用していない場合はどうなりますか?JavaScript es6のみ?
DDD

3
いつ追加されたのかはわかりませんが、コマンドパレットに "ウィンドウの再読み込み"が追加されました。これは、このような場合に最適です。
Coderer 2017

185

警告を削除するには、vscodeのsettings.jsonファイルに以下を追加します。

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode->設定->設定

ここに画像の説明を入力してください


どうもありがとう。私はes6 + decoratorsを使用していて、typescriptがインストールされていません。驚くばかり。
Akhmedzianov Danilian

3
VSCodeの問題を解決するためにプロジェクトで別のファイルを作成する必要がないため、この答えが最適です。
ロドリゴ

ctrl + ,usersettingsを開くためのショートカットキー。...Open settings.jsonsettings.json
usersettingsで

どうもありがとう。非常に役立ちます。
an0nh4x0r

102

このエラーは、ワークスペースフォルダーに「src」フォルダーを選択した場合にも発生します。

ルートフォルダ、「src」、「node_modules」が配置されているフォルダを選択すると、エラーが消える


9
これを投稿するためにここに来ました。これで解決しました。Angular CLI経由でAngular 2を使用していました。
非同期

上記が理解できない場合:Vscodeは、構成ファイルがそれを認識するためのフォルダーをロードする必要があります。私はさらに下foldeをロードする場合と思いますが、そのフォルダ以下から有効になり、新しい設定ファイルを書くことができます。
LosManos

それだけでした。ありがとうございました:)
カミル


32

プロジェクト内にファイルtsconfig.jsonを作成し、この行を追加します

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}

25

typescript.tsdk私に追加する必要があります.vscode/settings.json

"typescript.tsdk": "node_modules/typescript/lib"

5
これは私のために問題を解決しますが、その行はに入る.vscode/settings.jsonごとに、この
フラン・ロドリゲス

1
また、私のためにそれを解決しましたが、私には.vscodeフォルダーがありませんでした(理由はわかりません-私はバックエンド開発者です、私を放っておいてください!)、そのsettings.jsonファイルをルートフォルダーに作成しました。
年齢は

17

VSCodeで、ファイル=>設定=>設定(またはControl + comma)に移動すると、ユーザー設定ファイルが開きます。「javascript.implicitProjectConfig.experimentalDecorators」:trueを検索し、ファイルのexperimentalDecoratorsのチェックボックスをオンにすると、ファイルが修正されます。それは私のためにした。

ここに画像の説明を入力してください


13

Visual Code Studioで、[ファイル] >> [設定] >> [設定]に移動し、検索フィールドで「デコレータ」を検索し、画像のようにオプションを確認します。 ここに画像の説明を入力してください


11

settings.json次の場所にあるファイルを開く<project_folder>/.vscode/settings.json

または、下記のようにメニューからファイルを開くことができます

VSCode -> File -> Preferences -> Workspace Settings

experimentalDecoratorsの設定

次に、次の行をsettings.jsonファイルに追加します

{
    "typescript.tsdk": "node_modules/typescript/lib",
    "enable_typescript_language_service": false
}

それで全部です。「experimentalDecorators」に関する警告/エラーは表示されません


11
vscode 1.8.1を使用して「enable_typescript_language_service」を追加した後、「不明な構成設定」を取得しました
David Cheung

5
プロジェクトがTypescriptを使用している場合、これは恐ろしいアドバイスです!
paulsm4

1
「enable_typescript_language_service」を無効にすると、実際のリンティングTypeScriptオファーが実質的にオフになります。この提案は避けてください。
ジェシー

10

この回答は、使用している人々のために意図されたJavascriptのプロジェクトではなく活字体の一つ。tsconfig.jsonファイルの代わりに、jsconfig.jsonファイルを使用できます。

ファイル内に書き込みたいデコレータに警告させる特定のケースでは:

{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}

尋ねられたバグのある動作を考慮して、設定ファイルに「include」を指定し、エディターを再起動することは常により良い方法です。例えば

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}


9

tsconfig.jsonに次の行を追加し、VS Codeを再起動します。

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}

再起動が私にとっての鍵でした。ありがとう。
rynop

9

重要なことではありませんが、必ず以下を追加してください

  • ユーザー設定ではなくワークスペース設定

ファイル>>設定>>設定

"javascript.implicitProjectConfig.experimentalDecorators":true

これで問題が解決し、ここや他の場所で見つけたかなりの数の提案を試しました。



4

明快さと愚かさのために。

1).vscode / settings.jsonを開きます。

2)「typescript.tsdk」:「node_modules / typescript / lib」を追加します。

3)保存します。

4)Visual Studio Codeを再起動します。


4

Visual Studioで作業している場合。この修正を試すことができます

  1. Visual Studioからプロジェクトをアンロードする
  2. プロジェクトのホームディレクトリに移動し、「csproj」ファイルを開きます。
  3. 画像に示すように、このセクションにTypeScriptExperimentalDecoratorsを追加します。

    ここに画像の説明を入力してください

    1. Visual Studioでプロジェクトを再読み込みします。

この場所で詳細をご覧ください。


4

cliを使用して* .tsファイルをコンパイルする場合は、次のコマンドを使用してexperimentalDecoratorsを設定できます。

 tsc filename.ts --experimentalDecorators "true"

おかげで、これは私の欲求不満を救いました。私は質問者と同じ設定でしたが、Sublime Text 3を使用しており、あなたの解決策は役に立ちました!
Irfandy Jip

4

VSRCで、srcフォルダーだけでなく、プロジェクト全体のフォルダーもチェックしてください。srcのみを開くと、ts.config.json(プロジェクトフォルダーにあります)ファイルはスコープに含まれません。 VSは実験的なデコレータパラメータを認識しません。

私の場合、これはこの問題に関連するすべての問題を修正しました。


これも私の問題でした。node_modulesが見えますか?tsconfig.jsonが見えますか?そうでない場合は、新しいvsCodeウィンドウを開き、古いウィンドウを閉じ、[ファイル]-> [フォルダーを開く]を選択し、だけを選択するのではなく、srcとの親フォルダーを選択してください。node_modulessrc
カイルヴァセッラ




1

プロジェクトの外部に存在するTSファイルを開くと、この問題が発生する可能性があります。たとえば、lernaを使用していて、別のパッケージからファイルを開いていました。他のパッケージには実験的なデコレータを備えた独自のtsconfigがありましたが、VsCodeはそれを尊重していません。


1

作成中に、私は同じ問題に直面した注射用の角2にサービスを私は.Still私はColorsImmutableラインで、このエラーを得ていたtsconfig.jsonに場所ですべてのものを持っています。

@Injectable()
export class ColorsImmutable {

修正は、プロバイダー配列を使用してモジュールレベルまたはコンポーネントレベルでサービスを登録することでした。

providers:[ColorsImmutable ],

1

Deno JavaScriptとTypeScriptランタイムを使用していて、tsconfig.jsonまたはVSCode ide設定でexperimentalDecorators:trueを有効にしている場合。うまくいかないだろう。Denoの要件によると、Denoファイルを実行するときは、フラグとしてtsconfigを提供する必要があります。カスタムTypeScriptコンパイラオプションを参照してください

私の特定のケースでは、Denoテストを実行して使用しました。

$ deno test -c tsconfig.json

ファイルの場合、次のようなものがあります

 $ deno run -c tsconfig.json mod.ts

私のtsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}

彼らはドキュメントの実験的な機能が機能しないと述べているので、私はすでにこれをやっていますが、まだ運がありません
Ezzabuzaid

それが動作します。私のtsconfig.jsonのコンテンツの正確な回答を参照してください。次に、このリンクを参照してくださいgithub.com/manyuanrong/dso/issues/18
tksilicon

0

このオプションをtsconfig.jsonに追加しました。front "baseUrl": "front-end"-endをangular-cliプロジェクトの名前に置き換えます。



0

したがって、モジュール名とファイル名を一致させることで、これを回避できることがわかります。BankSpecialtyModuleというモジュール名がある場合は、ファイル名を指定します。bank-specialty.module.ts


0

新しいモジュールを作成し、*。module.tsファイルと* -routing.module.tsファイルを別のフォルダーに移動したときに、このエラーが発生しました。2つのファイルを削除し、新しいフォルダーにモジュールを作成した後、完全に機能します。環境Angularバージョン9およびAngular CLIバージョン9.1.0


0

私にとって、このエラー「デコレータの実験的サポートは将来のリリースで変更される可能性のある機能です(など)」は、AngularプロジェクトのVSコードでのみ、新しいサービスを作成するときにのみ発生しました。

上記の解決策:「Visual Code Studioでファイル>>設定>>設定に移動し、検索フィールドで「デコレータ」を検索し、オプションJavaScriptをチェックする›暗黙的なプロジェクト構成:実験的デコレータ」で問題が解決しました。

また、ターミナルウィンドウでng serveを停止して再起動すると、再コンパイル後にエラーが表示されなくなりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.