Typescript: console.log自动导入import console = require('console');

创建于 2019-03-10  ·  42评论  ·  资料来源: microsoft/TypeScript

重现步骤:
键入console. 。 在10中有7次,vscode将在文件的导入顶部插入import console=require('console'); ,导致编译错误。

迄今为止,vs代码是最令人讨厌的问题。


禁用所有扩展名时会发生此问题吗?:不确定

Bug Fixed VS Code Priority

最有用的评论

console.d.ts文件添加到您的src根目录并添加以下内容:

declare module 'console' {
    export = typeof import("console");
}

那将修复您的导入

所有42条评论

同样在这里(Ubuntu 18.04)。 它带有新的VSCode更新。.非常烦人。

似乎是由node的类型定义引起的。 移除:

declare module "console" {
    export = console;
}

../node_modules/@types/node/index.d.ts似乎是一个临时修复,直到该定义得到更新。 也可能是由于另一个已安装的节点模块为console声明类型定义而引起的。 您可以按照import console=require('console')导致的路径进行计算。 归功于这个stackoverflow

是否在禁用所有扩展的最新VS Code内部人员中重现了这一点? 确保您也使用最新的TypeScript版本

另外@Zlass您正在使用哪个版本的节点类型? 我在最新的@types/node中看不到该声明,因此无法重现此问题

好吧,我相信我找到了原因。 似乎是与@types/styled-components相关的错误,该错误依赖于@types/react-native ,这与节点的console类型冲突。

通过使用create-react-app创建一个新的打字稿react应用并安装@types/styled-components我能够在内部构造中重现它。

我不认为这是一个VS代码问题,并且已经有一个开放的问题,它在DefinitelyTyped这里

嗯,我不使用样式化的组件。 它与其他一些库一起出现并非不可能

@mschipperheyn我建议您检查尝试自动完成console 。 通过偷看每个自动完成建议的引用,我能够弄清楚哪个包在声明console的另一个定义。

我遇到了相同的问题(在1.30.2版上)。 这是一个React Native项目,没有使用样式化组件(但是其他任何lib都可以)。 在下面键入console ,分别是自动完成的输出。 第一个执行自动import ,第二个执行自动require

Screen Shot 2019-03-20 at 17 47 43

编辑:似乎在我的安装程序上它指向第207行上的以下~/Library/Caches/typescript/3.2/node_modules/@types/node/index.d.ts

console.d.ts文件添加到您的src根目录并添加以下内容:

declare module 'console' {
    export = typeof import("console");
}

那将修复您的导入

感谢@BrendonSled的临时修复...似乎已经为我解决了-现在将其添加到我所有其他项目中

该问题已被标记为“外部”,并且近期没有活动。 它已自动关闭以进行家政服务。

@BrendonSled谢谢! 最后是tmp解决方案

除了临时解决方案之外,有人对此有更新吗? Google仅返回此链接,而StackOverflow链接之前已发布

@BrendonSled thx为您提供解决方案

这真让我抓狂...

啊,这真烦人!

这里同样的问题。 我正在使用Linux Mint 19.1。

我可以绕过此auto import功能的唯一方法是:

转到File :arrow_forward: Preferences :arrow_forward: Settings :arrow_forward:搜索Javascript Auto Imports和/或Typescript Auto Imports :arrow_forward:取消选中Enable/disable auto imports suggestions

要么

转到File :arrow_forward: Preferences :arrow_forward: User Snippets :arrow_forward:选择global.code-snippets :arrow_forward:将其保存到/vscode/snippets/global.code-snippets :arrow_forward :然后添加并保存此全局代码段(或者,如果您不希望它是全局代码,则可以创建一个特定于语言的代码段–这将使控制台代码段位于自动建议列表中第一个条目下方):

{
  "Print to console": {
    prefix: ["console", "console.", "console.l", "console.lo", "console.log"],
    body: ["console.log($1);"],
    description: "Log output to console"
  }
};

相同的问题在这里Visual Studio 1.33.1节点10
临时解决方案为我工作...

真是气死了如果我们可以将某些汽车进口列入黑名单,那就太好了。

这非常烦人。 根据严格的ts, @ BrendonSled发布的解决方法无效。 还有其他解决方法吗?

'export=' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.   ts(7022)

@AndrewMorsillo尝试对此问题提供一些建议。

特别是,这个建议这个建议似乎都改善了我的处境。

@RyanCavanaugh即使包中的d.ts错误,我们是否可以改善体验?

感谢@mattcarlotta的回答。 我只是为JSON格式化,因为VSCode似乎不尊重它:

{
    "Print to console": {
      "prefix": ["console", "console.", "console.l", "console.lo", "console.log"],
      "body": ["console.log($1);"],
      "description": "Log output to console"
    }
}

这让我🙃在React Native项目上

这个问题应该已经解决。 如果您仍然遇到此问题,请

  1. 确保在安装此插件后仍然看到该行为
  2. 提供问题的最小重现。

@DanielRosenwasser
我安装了插件,然后丢失了任何自动导入功能。
我想要自动导入,但是不想自动导入控制台。

好的,这听起来像是一个单独的问题,如果您可以最小程度地重现该问题,则应提交到https://github.com/Microsoft/TypeScript

@DanielRosenwasser那个插件为我解决了。 我不太确定我了解这是什么。 在推出新版本的VSCode之前,这是一种解决方法,还是更永久的解决方案?

这意味着问题已得到解决,并将在下一版VS Code中修复。

最新版本的vscode仍未解决此问题

我们是否有此问题的最新更新? 对我来说,这个问题仍然存在于最新版本的vscode中。

对不起这是我的错。 它将在下个月发布。 https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next的内部人员和用户将可以使用此修复程序。

@DanielRosenwasser您确定吗? 我已安装JavaScript and TypeScript Nightly ,但仍然遇到此问题。

我看到了VScode Insider(无插件)和VSCode(已安装插件)的问题。 他们俩似乎都使用TS 3.6.0-dev.20190810

VSCode

Version: 1.37.0
Commit: 036a6b1d3ac84e5ca96a17a44e63a87971f8fcc8
Date: 2019-08-08T01:22:37.660Z
Electron: 4.2.7
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Darwin x64 18.7.0

VSCode Insider

Version: 1.38.0-insider
Commit: ffa22b268f451b5211abbe2d2a47e6b753b55b1a
Date: 2019-08-13T07:23:55.783Z
Electron: 4.2.9
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Darwin x64 18.7.0

Screenshot 2019-08-13 at 17 08 37

可以重新打开吗? 因为尚未修复(即使使用Typescript Nightly插件也无法修复)

大家好,有人可以分享发生此问题的实际回购吗? 听起来很疯狂,但我根本无法复制。 TypeScript进行了特殊处理,以将自动重新导入声明超过一年的排除在声明之外。 事实并非如此,这意味着很奇怪,但显然很普遍。

我最好的猜测是,依赖关系的某种组合同时给了您两个不同版本的@types/node ,并且不知何故,这给系统造成了麻烦。 我将尝试发明这样的方案,但是如果有人可以提供发生这种情况的确切环境,那肯定会加快修复速度。


更新:找出一个副本。 漠视。

看起来这不会进入RC,但应该使其进入夜间版本并正确发布3.6。

我运行Mac和Ubuntu。 Mac很好,Ubuntu有这个问题。
已在每晚修正。

对于谁说JavaScript和TypeScript Nightly无法正常工作的人,请确保正确配置它:

  1. 在VS Code中打开JavaScript或TypeScript文件。
  2. 在VS Code命令面板中,运行TypeScript:选择TypeScript版本命令。
  3. 确保已选择“使用VS代码”的版本

在安装样式组件之前,我一直很高兴没有这个问题。

@tlaak您正在使用什么版本的TypeScript? 我很确定我在3.6中解决了这个问题。 当然,较旧的TypeScript版本将永远永远表现出这种行为。

@andrewbranch我想我使用的是由create-react-app设置的旧版3.5.x版本。 但是无论如何,我再也无法访问该项目,因此无法确认。

@andrewbranch我很高兴在项目中遇到这个非常烦人的问题,将TypeScript从3.5.x升级到3.6之后,我可以确认它已修复! 🎉供其他任何有此问题的人参考:确保VS Code右下角的Typescript版本也设置为3.6.x

版本3.5.x在那里,在3.6.2上不再有控制台自动导入。
哪个3.6.2是vscode默认的ts版本。

image

确保您的vscode设置为默认值,而不是工作区/项目ts版本
image

您可以通过遵循import console = require('console')所指向的路径来弄清楚。 归功于这个stackoverflow。

@Zlass,这是一个救生员🙏

对于仍然有问题的任何人:您可以按照stackoverflow上的步骤进行操作

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

xealot picture xealot  ·  150评论

RyanCavanaugh picture RyanCavanaugh  ·  205评论

yortus picture yortus  ·  157评论

fdecampredon picture fdecampredon  ·  358评论

quantuminformation picture quantuminformation  ·  273评论