我收到警告...


装饰器的实验支持是一项功能,在将来的版本中可能会更改。设置'experimentalDecorators'选项`以消除此警告。即使我的tsconfig.json中的editorOptions具有以下设置,也是如此:

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


奇怪的是,一些使用修饰符的随机类没有显示警告,而同一项目中的其余类却显示警告。

在TypeScript编译器中可能导致这种行为的原因是什么?

评论

您是否尝试过重新启动VS Code?我发现有时更改tsconfig.json后这是必要的。

您可以尝试打击答案花花公子。它对我有用! stackoverflow.com/a/38970591/2468781

偶然地,如果有人遇到了使用VS Professional而不是VS Code的问题,则可能是手动将.ts文件添加到了角度项目中;如果是这样,则默认的TS编译与Angular CLI冲突。右键单击文件->属性->构建操作:无。然后根据需要重新启动VS。

VS Code重新启动可以帮助我解决问题。

正如@ paulsm4所说,在我的情况下,在错误目录中启动VSCode后出现了问题。您想在tsconfig.json用于项目的目录中启动VSCode。

#1 楼

尽管VS Code是TypeScript项目的出色编辑器,但它需要时不时地发挥作用。通常,某些文件会在没有警告的情况下吓跑并抱怨。通常,解决方法似乎是保存并关闭所有打开的文件,然后打开tsconfig.json。之后,您应该可以重新打开有问题的文件,而不会出现错误。如果它不起作用,则起泡沫,冲洗并重复。

如果您的tsconfig.json使用files数组指定了其源文件,则只有在引用了相关文件(例如VS Code)的情况下,IntelliSense才能正常运行。可以通过遍历输入文件树来找到它。

编辑:“重新加载窗口”命令(现在已经有很长的历史了)应该可以彻底解决此问题。

评论


谢谢-从tsconfig.json中删除“文件”可解决问题

– Bensiu
16年7月11日在14:35

答案与我的案子并没有真正的关系,但以某种方式帮助我弄清了我的问题。我正在使用VS 2015,并且在更改xproj和tsconfig文件之间,我错过了一个事实,即包含我的脚本文件的文件夹已列在tsconfig的排除部分中。希望这对某人有帮助。

– Stefan Balan
16-09-3在18:10



文件>关闭文件夹>打开文件夹对我有用。在没有正确关闭vscode的情况下重新启动计算机后,发生了这种情况。

– Adrian Moisa
17 Mar 24 '17 12:28



如果我不使用打字稿怎么办?只有JavaScript ES6?

– DDD
17-4-22在22:17



我不确定何时添加它,但是命令调色板现在具有“重新加载窗口”,这对于此类事情非常理想。

–编码器
17年8月7日在6:46

#2 楼

我必须在vscode的settings.json文件中添加以下内容,以删除警告。
 "javascript.implicitProjectConfig.experimentalDecorators": true
 

VSCode->首选项->设置

更新
正如Clepsyd所指出的,此设置已被弃用。您需要立即使用
 "js/ts.implicitProjectConfig.experimentalDecorators":true
 



评论


非常感谢。我正在使用es6 + decorators,但尚未安装打字稿。太棒了

– Akhmedzianov Danilian
18年1月18日在11:56

这个答案是最好的,因为不需要在项目中创建单独的文件来解决VSCode问题。

–rodrigocfd
18-3-14的3:22

ctrl +,用于打开用户设置的快捷键。在用户设置上单击3个点(...),然后在弹出窗口上单击打开settings.json以打开settings.json

– Suhailvs
18-10-3在9:37



非常感谢。很有帮助。

–an0nh4x0r
20年6月15日在10:40

此设置已被弃用。您现在应该使用:“ js / ts.implicitProjectConfig.experimentalDecorators”:true

–倒闭
20 Dec 15'在15:45

#3 楼

当您为工作区文件夹选择“ src”文件夹时,也会发生此错误。

选择根文件夹,“ src”,“ node_modules”所在的文件夹后,错误消失

评论


来到这里发布这个。这为我解决了。我通过Angular CLI使用Angular 2。

–异步
17年6月30日在12:17

如果以上内容无法理解:Vscode必须加载配置文件知道的文件夹。如果您想进一步加载文件夹,我想您可以编写一个新的配置文件,该文件在该文件夹及以下的文件夹中均有效。

–LosManos
20 Mar 16 '20 at 13:14

就是这样谢谢 :)

–卡米尔
20年6月19日在6:49

#4 楼

文件->首选项->设置


评论


对我来说,此问题出现在1.37版上,您的解决方案已解决。

–斯蒂芬(Stephane)
19年8月10日在20:08

1.转到文件->首选项->设置。 2.搜索“ experimentalDecorators”。3.选中“启用/禁用experimentalDecorators”。4.按Ctrl + S保存设置。

–赛义德·纳西尔·阿巴斯(Syed Nasir Abbas)
20年7月14日在18:54



#5 楼

请按照以下步骤删除此警告消息。

步骤1:
转到IDE中的设置,然后查找或搜索experimentalDecorators。
步骤2:然后单击复选框,警告已在您的页面中删除。

谢谢您编码愉快..........

评论


谢谢我的g = D

–亚历杭德罗·卡瓦哈尔·萨里亚(Alejandro Carvajal Sarria)
20-09-29在23:39

谢谢,这很简单

– Sagar Khatri
20 Dec 16'在14:45

#6 楼

在您的项目中,创建文件tsconfig.json,然后添加以下行

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


#7 楼

在VSCode中,转到File => Preferences => Settings(或Control +逗号),它将打开User Settings文件。搜索“ javascript.implicitProjectConfig.experimentalDecorators”:true
,然后选中该文件中的experimentalDecorators复选框,它应该对其进行修复。它对我有用。



#8 楼

必须将typescript.tsdk添加到我的.vscode/settings.json中:

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


评论


这为我解决了这个问题,但按照这一行将其放入.vscode / settings.json

– Fran Rodriguez
16-09-20在16:42

也为我解决了这个问题,但是我没有.vscode文件夹(我不知道为什么-我是一个后端开发人员,别管我!),所以我在根文件夹中创建了一个带有settings.json的文件文件。

–年龄
17年5月10日在6:13

谢谢!!您到底是怎么知道的?

– raphisama
20 Jul 17'3:48

#9 楼

对我来说,此错误“对装饰器的实验性支持是一个功能,在将来的版本中可能会更改。(等)”仅在Angular项目的VS Code中并且仅在创建新Service时发生。
解决方案上方:“在Visual Code Studio中,转到“文件>>首选项>>设置,在搜索字段中搜索”装饰器”,然后检查选项JavaScript›隐式项目配置:实验装饰器”解决了该问题。
也停止了ng在终端窗口中投放并重新启动它,使错误在重新编译后消失。

评论


哇,我的确切情况非常罕见。感谢分享!

–亚伦·乔丹
20年7月1日在21:18

#10 楼

在Visual Code Studio中,转到“文件>>首选项>>设置”,在搜索字段中搜索“装饰器”,然后检查图像中的选项。


#11 楼

"javascript.implicitProjectConfig.experimentalDecorators": true


将解决此问题。

评论


@nadya:settings.json(用户或工作区)。您也可以使用gui设置,因为此答案确实如此

–弗兰克·诺克(Frank Nocke)
19年12月12日12:00

#12 楼

在以下位置打开settings.json文件

,或者您可以从菜单中打开文件,如下所述。

<project_folder>/.vscode/settings.json



然后在VSCode -> File -> Preferences -> Workspace Settings文件中添加以下行

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


就这样。您不会看到有关'experimentalDecorators'的警告/错误

评论


使用vscode 1.8.1添加“ enable_typescript_language_service”后,出现“未知配置设置”

–chub
17年1月22日在12:35

如果您的项目使用Typescript,这是可怕的建议!

–paulsm4
19年1月3日,17:22

禁用“ enable_typescript_language_service”将有效地关闭任何实时的TypeScript产品,请避免该建议。

–杰西
19年11月14日在15:23

这对我有用。有关更多信息,请参见以下链接。 ihatetomatoes.net/…

–饶
20 Dec 25'12:02



#13 楼

此答案适用于使用Javascript项目而不是Typescript项目的人员。可以使用jsconfig.json文件代替tsconfig.json文件。

在有装饰器警告您要在文件内部写入的特定情况下: br />
要防止出现越野车行为,最好在配置文件中指定“ include”,然后重新启动编辑器。例如

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


评论


以防万一,无论使用哪种语言,请务必将正在使用的文件包含在“ include”中,例如“ app / * / *。ts”或“ app / * / *。js”等,这一点很重要。我的问题。

–敬畏
20年7月19日在7:15

#14 楼

在tsconfig.json中添加以下行,然后重新启动VS Code。

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


评论


重新启动对我来说是关键。谢谢。

– rynop
19年1月10日在5:34

#15 楼

不要太着急,但请确保在文件>>首选项>>设置下将以下内容添加到


工作区设置而非用户设置
“ javascript.implicitProjectConfig.experimentalDecorators”:正确

这为我解决了这个问题,我尝试了很多在这里和其他地方找到的建议。

#16 楼

我最近在Visual Studio 2017下遇到了这个问题-原来是由VS的“功能”引起的-当Build操作未设置为Content时忽略了tsconfig.json。

因此将Build操作更改为内容并重新加载解决方案即可解决问题。

#17 楼

使用
@Injectable({
  providedIn: 'root'
})
警告一直持续到我引用项目中某处的新服务。一旦使用该服务,警告就会消失。无需更改打字稿配置或vscode设置。

#18 楼

为了清晰和愚蠢起见。

1)打开.vscode / settings.json。

2)添加“ typescript.tsdk”:“ node_modules / typescript / lib”

3)保存。

4)重新启动Visual Studio代码。

#19 楼

如果您使用cli来编译* .ts文件,则可以使用以下命令来设置experimentalDecorators:

 tsc filename.ts --experimentalDecorators "true"


评论


谢谢,这保存了我的沮丧。我具有与发问者相同的设置,但是我使用的是Sublime Text 3,事实证明您的解决方案是有帮助的!

–烦人的吉普
19年4月12日在13:16

#20 楼

如果您在Visual Studio中工作。您可以尝试此修复程序


从Visual Studio中卸载项目
转到项目主目录并打开“ csproj”文件。

将TypeScriptExperimentalDecorators添加到本节中,如图所示。




在Visual Studio中重新加载项目。



在此位置查看更多详细信息。

#21 楼


打开VScode。
按ctrl +逗号
按照屏幕快照中的说明进行操作


搜索
实验装饰器
进行编辑

/>


#22 楼

请检查是否在VS Code中选择了整个项目的文件夹,而不仅仅是src文件夹,因为如果仅打开src,则ts.config.json(位于项目文件夹中)文件将不在范围内,并且VS无法识别实验装饰器参数。

在我看来,这解决了与此问题有关的所有问题。

评论


这也是我的问题。可以看到node_modules吗?可以看到tsconfig.json吗?如果不是,请打开一个新的vsCode窗口,关闭旧窗口,选择file-> open folder,并确保选择src和node_modules的父文件夹,而不是仅选择src。

–凯尔·瓦塞拉(Kyle Vassella)
19年2月13日在23:40

#23 楼

在Angular 2中创建可注射服务时遇到了相同的问题。
我在tsconfig.json中放置了所有内容。仍然在ColorsImmutable行遇到此错误。

@Injectable()
export class ColorsImmutable {



解决方法是使用providers数组在模块级别或组件级别注册服务。

providers:[ColorsImmutable ],



#24 楼

打开整个项目的文件夹而不是项目名称/ src


tsconfig.json不在src文件夹中


#25 楼

我在以下声明中遇到此错误
对装饰器的实验支持是一项功能,在将来的发行版中可能会更改。在tsconfig或jsconfig中设置'experimentalDecorators'选项以删除此警告。ts(1219)
因为我的组件未在AppModule或(app.module.ts)中注册,所以我只是给出了像
从{../app/abc/abc.component'导入{abcComponent}的名称空间;
并在声明中将其注册

评论


创建包含“ @Injectable()导出类MyService {}”的新文件后,出现完全相同的错误。没有添加到AppModule(ng10)的内容

– Wolf359
20年7月18日在18:23

我遇到过同样的问题

–托马斯·马丁(Thomas Martin)
20年8月27日在16:52

#26 楼

我通过从tsconfig.json文件中删除“ baseUrl”:“”纠正了警告

#27 楼

如果打开项目外部存在的TS文件,则可能会遇到此问题。例如,我正在使用lerna,并从另一个软件包中打开了一个文件。尽管其他软件包具有带有实验装饰器的tsconfig,但VsCode却不兑现。

#28 楼

如果您使用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"
  }
}


评论


我已经在执行此操作了,但还是没有运气,因为它们在docs实验功能中指出无法使用,

– Ezzabuzaid
20年5月25日在16:54

会的。请参阅我的tsconfig.json内容的最新答案。然后看这个链接github.com/manyuanrong/dso/issues/18

– tksilicon
20 May 25 '17:18

#29 楼

我将此选项添加到tsconfig.json,"baseUrl": "front-end"用您的angular-cli项目的名称替换前端。

#30 楼

您也可以尝试使用ng build。我刚刚重建了应用程序,但现在不符合要求。