VSCode:是不是可以抑制实验性装饰器警告

Posted

技术标签:

【中文标题】VSCode:是不是可以抑制实验性装饰器警告【英文标题】:VSCode: Is it possible to suppress experimental decorator warningsVSCode:是否可以抑制实验性装饰器警告 【发布时间】:2015-10-22 15:09:21 【问题描述】:

在 VSCode 中,我收到错误:

“对装饰器的实验性支持是一项可能会在未来版本中更改的功能。指定 '--experimentalDecorators' 以删除此警告。”

我可以将--experimentalDecorators 标志添加到我的tasks.json 文件以在构建时删除此错误,但在加载VSCode 时我似乎无法将其从智能感知或错误列表中删除。

有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

下面是 VSCode 版本 1.60.12 的答案

    按“ctrl”+“,”。 输入“settings.json”。 see this image to click on settings.. 粘贴“js/ts.implicitProjectConfig.experimentalDecorators”:true --> See my settings for reference

【讨论】:

【参考方案2】:

我已经在 tsconfig.json 中启用了实验性装饰器,所以我有点困惑,直到我发现 this thread on GitHub 有人说要检查 VS Code 中的设置。

所以我去了 File --> Preferences --> Settings 并搜索了实验性装饰器并检查了这两个设置:

以下是我的 VSCode 版本的详细信息:

Version: 1.52.1 (user setup)
Commit: ea3859d4ba2f3e577a159bc91e3074c5d85c0523
Date: 2020-12-16T16:34:46.910Z
Electron: 9.3.5
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: 8.3.110.13-electron.0
OS: Windows_NT x64 10.0.18363

【讨论】:

【参考方案3】:

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

就我而言,这解决了所有问题

【讨论】:

【参考方案4】:

我必须在 vscode 的 settings.json 文件中添加以下内容以消除警告。

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> 首选项 -> 设置

【讨论】:

请不要添加same answer to multiple questions。一旦您获得足够的声誉,就回答最好的一个并将其余的标记为重复项。如果不是重复的,edit 回答并根据问题调整帖子。 @Rob。谢谢(你的)信息。也会这样做。 这对我有用。以前的答案都没有。谢谢@ManojPaul【参考方案5】:

即使在项目中的正确级别打开 VSCode,您可能仍需要在根目录中添加一个额外的 tsconfig 文件。我现在在我的项目根目录(仅包含 php 索引和文件夹)、ts 文件夹(遗留 typescript 类)和我的 src 文件夹(vue 组件)中有一个 tsconfig。

不要忘记关闭文件夹并重新启动 VSCode。

【讨论】:

【参考方案6】:

正如其他答案所指出的,您的 Visual Studio 代码需要找到 tsconfig.json 文件。

我遇到了同样的问题。这主要是因为我没有意识到项目结构。

(提示:从上到下阅读下图中的文字)。

    我将tsconfig.jsontsconfig.app.json 混淆了。 我在 Visual Studio 中打开了错误的文件夹。因此,tsconfig.json 不在范围内。

只需打开正确的根文件夹(即项目文件夹,比src 高一级。)为我解决了问题。

【讨论】:

感谢这个!!我正在使用 VS Code 打开 src 文件夹,所以我所要做的就是将 tsconfig.json 复制到 src @MariusB 实际上,最好将文件夹打开更高一级,因为您不仅会错过tsconfig.json,还会错过其他文件,例如package.json,. ..它们都需要位于您项目的根目录中。所以,实际上,您不想打开 src 文件夹,但您实际上想打开它的父文件夹。【参考方案7】:

这有助于我处理 React JS 文件(VSCode 版本 1.9.1)。

1) 放入tsconfig.json:


    "compilerOptions": 
        "experimentalDecorators": true,
        "allowJs": true
    

2) 重启 VS Code。

注意:正如 Tim 下面提到的,即使您不使用 TypeScript,您也需要添加 tsconfig.json

来源:https://ihatetomatoes.net/how-to-remove-experimentaldecorators-warning-in-vscode/

【讨论】:

我已经成功了。请注意,即使您不使用 TypeScript,也需要添加 tsconfig.json。【参考方案8】:

如果您使用 Grunt (grunt-ts),您还必须在文件 gruntfile.js 中添加“experimentalDecorators: true”作为选项。

您的文件最后应该如下所示:

module.exports = function(grunt) 
  grunt.initConfig(
    ts: 
      default : 
        src: ["**/*.ts", "!node_modules/**"]
      ,
      options: 
        experimentalDecorators: true
      
    
  );
  grunt.loadNpmTasks("grunt-ts");
  grunt.registerTask("default", ["ts"]);
;

有关更多信息,您可以阅读 github 上的文档https://github.com/TypeStrong/grunt-ts#experimentaldecorators

【讨论】:

【参考方案9】:

我遇到了同样的错误。我将以下tsconfig.json 文件添加到我的项目根目录,重新启动VSCode,它终于消失了:


    "compilerOptions": 
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "module": "amd",
        "target": "ES6" 
    

更新:

我注意到有时 VS Code 不会抑制此警告,除非您在 tsconfig.json 中添加“文件”数组,即使是空的也可以。对我来说,现在每次都有效,如果消息没有消失,请尝试以下操作:


    "compilerOptions": 
        ... 
    ,
    "files": [],
    "exclude": [
        "node_modules"
    ]

也许这可以解释为什么每个人都有不同的结果?

【讨论】:

文件不应该叫jsconfig.json而不是tsconfig.json吗?我的只使用 JS 而不是 TS。 无法使其与 tsconfig.jsonjsconfig.json... (v0.10.11 linux-x64) 一起使用 无论我给出什么设置,它都无法运行。不得不走@Wosi的方式 我正在使用 VS Code 1.3.1,将 experimentalDecorators: true 添加到 tsconfig.json 仍然无法消除此错误。我正在使用打字稿 v1.8.10。其他区别是module: commonjstarget: es5。有什么想法吗? 对我来说,将"target": "es5" 更改为"target": "ES6" 解决了这个问题。【参考方案10】:

在两个不同的 Angular 2 最终发布项目中苦苦挣扎,这是我的解决方案。

tsconfig.jsonsrc 折叠中。


    "compilerOptions": 

        "experimentalDecorators": true

    
 

将此设置添加到文件->首选项->用户设置

"typescript.tsdk": "node_modules\\typescript\\lib"

【讨论】:

互联网上所有解决方案中唯一对我有用的东西,但我必须将其添加到可以从工作区设置打开的 settings.json 中【参考方案11】:

VSC 默认查看自己的 TS 库和定义。如果您使用的是不同的版本(这很可能),您应该指向 VSC 来查找该版本的定义。

在我的settings.json 文件中,我进行了以下设置:

// Place your settings in this file to overwrite default and user settings.

    "typescript.tsdk": "node_modules\\typescript\\lib"


我相信您可以为您的用户设置或工作区设置进行设置。因此,您可以在用户设置中进行一次性配置,也可以只为一个项目/工作区进行配置。如果您将打字稿安装在本地指定文件夹中,则此方法有效 - 我相信这是默认节点模块文件夹。

要编辑您的设置,请转到File/Preferences/User SettingFile/Preference/Workspace Settings

更新:Visual Studio Code 刚刚发布了一个新版本,更好地支持不同版本的打字稿。在这里查看:https://code.visualstudio.com/updates#_languages

【讨论】:

这很好用!如果您在使用 webpack 的 angular-cli 时遇到此问题,请尝试一下。 angular-cli 在本地使用 TypeScript 2.0。在项目的根目录下创建一个 .vscode 目录,并使用这个 sn-p 添加一个 settings.json 文件。 谢谢!这终于为我解决了这个问题。 PS。只需确保您提供正确的相对路径,它从您在 VSC 中打开的目录开始。对我来说是"typescript.tsdk": "Apps/WebApp/node_modules/typescript/lib" 效果很好!你应该提到,如果你运行npm list typescript,它会告诉你你安装了多少个版本,如果>1,你需要明确“告诉它”使用哪个版本。 谢谢老兄。有效!【参考方案12】:

我遇到了同样的错误,我发现这是我将组件文件扩展名命名为 .js 它应该是 .ts

【讨论】:

你确定吗? .js 是 JavaScript,而 .ts 是被编译成 JavaScript 的 TypeScript。原则上是一样的 @slfan 是的,它们可能是相同的,但我注意到我的文件是用打字稿编写的,我用 .js ext 命名它,这是错误的,当你用 .ts 命名它然后它编译时它不会编译进入javascript【参考方案13】:

Visual Studio code 1.3.1 中,我的修复是在 C:\Program Files (x86)\Microsoft VS Code\resources\app\extensions\typescript\server\typescript\lib \tsserver.js 并注释掉或删除该行。

if (!compilerOptions.experimentalDecorators) 
     error(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Specify_experimentalDecorators_to_remove_this_warning);

【讨论】:

【参考方案14】:

您可以在setting.json 中使用"typescript.tsdk" 更改包含VSCode 使用的tsserver.js 和lib.ts 文件的特定文件夹路径。

请参阅此示例:Can I use a relative path to configure typescript sdk?

注意:您可以在文件 > 首选项 > 用户设置中找到 setting.json

【讨论】:

我必须以@Wosi 的方式编辑文件,然后编辑“typescript.tsdk”以指向更新文件的目录以使工作正常。跨度> 【参考方案15】:

您可以通过删除%code%\resources\app\plugins\vs.language.typescript\lib\tsserver.lib 中产生错误的行来实现这一点。

查找以下代码并删除

            if (!compilerOptions.experimentalDecorators) 
              error(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Specify_experimentalDecorators_to_remove_this_warning);
            

【讨论】:

对于最新版本(目前为0.10.11)路径更改为resources/app/extensions/typescript/server/typescript/lib/tsserver.js 我在使用非 Visual Studio 应用程序(javascript 中的 Angular 应用程序)时也遇到了这个错误。在这种情况下,要修复的文件是:node_modules/typescript/lib/tsserver.js @people 另请注意,在我的情况下,我必须像上面那样替换文件中的多行。 刚刚更新VSC;路径现在更改为:%code%\resources\app\extensions\typescript\node_modules\typescript\lib\tsserver.js 我已经为此奋斗了 6 个月,基本上已经尝试了所有方法,这是唯一对我有用的方法。非常感谢。

以上是关于VSCode:是不是可以抑制实验性装饰器警告的主要内容,如果未能解决你的问题,请参考以下文章

vscode:[ts] 对装饰器的实验性支持是一项可能会更改的功能

VSCode 错误装饰默认为文本不透明度(而不是下划线波浪)

对装饰器视觉工作室 2017 的实验性支持

LayaBox---TypeScript---装饰器

macOS 的 vscode 资源管理器中缺少 git 装饰

类中的装饰器在Pycharm中抛出警告