import console = require("console");
console.
<<我键入。及以上会自动在VScode中导入。有人知道如何禁用它吗?
(我认为这是我的扩展程序之一。可能更漂亮。)
编辑:它仅在React Typescript环境中发生。没有打字稿没有反应。
import console = require("console");
console.
<<我键入。及以上会自动在VScode中导入。有人知道如何禁用它吗?
(我认为这是我的扩展程序之一。可能更漂亮。)
编辑:它仅在React Typescript环境中发生。没有打字稿没有反应。
Answers:
免责声明:不应将其视为“解决方案”,但这是最简单/最快的。
这个答案是假设您使用的是VSCode。其他IDE应该相似。
console
.
,允许IntelliSense添加import console = require("console");
require("console")
declare module "console" {
export = console;
}
"console"
,但这是一个细节。谢谢!
我也经历了这一点,这似乎与VSCode中的“自动导入”功能有关。禁用所有扩展似乎也不会消失。
解决方法是,可以在设置中禁用自动导入。
如果您使用Javascript
“ javascript.suggest.autoImports”:否
如果您使用打字稿
“ typescript.suggest.autoImports”:否
编辑:错误的自动导入发生是因为此代码在依赖树下的软件包中
declare module "console" {
export = console;
}
该软件包可以位于您本地的node_modules目录中,也可以位于全局安装的引用软件包中。
declare module "console"
npm list [packageName]
以确定package.json中的哪个软件包取决于其中包含控制台代码的软件包。如果您在本地node_modules中找不到代码,则可以
在package.json中一一消除软件包
在全局安装的模块中搜索控制台代码,您的项目中的包可能会引用该控制台代码
%USERPROFILE%\ AppData \ Roaming \ npm \ node_modules%USERPROFILE%\ AppData \ Local \ Microsoft \ TypeScript
我知道这不是一个简单的解决方案,但我希望它会有所帮助,就我而言,我有一个来自react-native-copilot-> rimraf->节点的引用,其中包含控制台代码。删除react-native-copilot解决了该问题。
~/Library/Caches/
文件夹内的“ typescript/3.2/node_modules/@types/node/index.d.ts”中找到了错误的代码。我在Mac上。因为它在我的缓存工作区中,所以我删除了实际的代码:```lang-js声明模块“ console” {export = console; }```而且有效!
我发现的最优雅的解决方案是console.d.ts
在项目的某个位置创建虚拟文件:
declare module 'console' {
export = typeof import("console");
}
这将阻止自动导入。
积分:https : //github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436
如果您添加一个用于插入的代码段console.log
,而是使用该代码段,则不会自动导入“控制台”
https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets
这是我的片段:
{
"Print to console": {
"prefix": "cl",
"body": [
"console.log('$1');",
],
"description": "Log output to console"
}
}
防止这种情况发生的一种方法是修改tsconfig.json文件,以限制自动导入到项目中的类型集。
我遇到了同样的问题,并通过添加以下内容进行修复:
types: []
进入我的tsconfig.json文件。这样做是禁止TypeScript(以及VSCode的扩展名)自动将其附带的所有节点包导入@types/
到项目配置中。如果您使用这些类型显式导入程序包,这不会阻止TS导入这些类型定义。
在我的特定情况下,console
定义来自@types/node
,已作为Storybook的依赖项导入到项目中。但是,我的项目是一个webpack项目,旨在在浏览器中运行,因此将Node.js类型导入我的源代码中没有任何意义。您要在浏览器中使用的基本类型集是dom类型,而不是节点类型。
根据您的项目,您可能必须将一组基本类型包显式添加到types参数中(types: ["dom", "react"]
依此类推)。但是,在我看来这是不必要的,我的项目能够使用空列表进行编译。VSCode自动导入“控制台”的趋势似乎已经完全消失。到目前为止,我还没有发现任何其他不良影响。
有关在tsconfig.json中设置类型的更多信息,请点击此处:https ://www.typescriptlang.org/docs/handbook/tsconfig-json.html