import console = require("console");
console. << I型。和以上的代码会自动导入到VScode中。有人知道怎么解除吗?(我想这是我的一个扩展。可能更漂亮)。编辑:只发生在React Typescript环境中。而不是在Typescript没有React。
console.
polhcujo1#
免责声明:这不应该被认为是“解决方案”,但它是最简单/最快的。这个答案是假设你正在使用VSCode。其他IDE应该类似。1.开始键入console1.单击Enter或键入.,允许IntelliSense添加import console = require("console");
console
.
require("console")
declare module "console" { export = console; }
flseospp2#
我也经历了这一点,这似乎是VSCode中自动导入功能的问题。禁用所有扩展似乎也不会让它消失。作为一种解决方法,您可以在设置中禁用自动导入。
如果使用Javascript
“javascript.suggest.autoImports”:假的
如果使用Typescript
“typescript.suggest.autoImports”:假的
编辑:错误的自动导入发生是因为依赖关系树下的包中的此代码
该包可以位于本地node_modules目录中,也可以位于全局安装的引用包中。1.在本地node_modules中搜索declare module "console"1.如果您在本地包中找到它,请运行npm list [packageName]以确定package.json中的哪个包依赖于其中包含控制台代码的包。如果在本地node_modules中找不到代码,您可以1.在package.json中逐个删除包1.在全局安装的模块中搜索控制台代码,这些模块可能被项目中的包引用%USERPROFILE%\AppData\Roaming\npm\node_modules %USERPROFILE%\AppData\Local\Microsoft\TypeScript我知道这不是一个简单的解决方案,但我希望它能有所帮助,在我的例子中,我有一个react-native-copilot -> rimraf -> node的参考,其中有控制台代码。删除react-native-copilot解决了这个问题。
declare module "console"
npm list [packageName]
nkhmeac63#
我发现的最优雅的解决方案是在项目中的某个地方创建虚拟console.d.ts文件:
console.d.ts
declare module 'console' { export = typeof import("console"); }
这将阻止自动导入。图片来源:https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436
aor9mmx14#
如果您添加了一个用于插入console.log的代码片段并使用它,则不会自动导入“console”https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets以下是我的片段:
console.log
{ "Print to console": { "prefix": "cl", "body": [ "console.log('$1');", ], "description": "Log output to console" } }
lnvxswe25#
如果你像我一样忘记了“cl”,你可以在片段中使用多个前缀:)
{ "Print to console": { "prefix": ["cl","co","con","cons","conso","consol","console", "console.l","console.lo","console.log"], "body": [ "console.log($1);", ], "description": "Log output to console" } }
yzuktlbb6#
防止这种情况发生的一种方法是修改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
types: []
@types/
@types/node
types: ["dom", "react"]
idv4meu87#
一个解决方案可以是设置中的"editor.snippetSuggestions": "top",。显然,要定义console.log。
"editor.snippetSuggestions": "top",
7条答案
按热度按时间polhcujo1#
免责声明:这不应该被认为是“解决方案”,但它是最简单/最快的。
这个答案是假设你正在使用VSCode。其他IDE应该类似。
1.开始键入
console
1.单击Enter或键入
.
,允许IntelliSense添加import console = require("console");
require("console")
上的Ctrl+单击(或F12,或Cmd+单击(在macOS上))1.注解掉这段代码:
flseospp2#
我也经历了这一点,这似乎是VSCode中自动导入功能的问题。禁用所有扩展似乎也不会让它消失。
作为一种解决方法,您可以在设置中禁用自动导入。
如果使用Javascript
“javascript.suggest.autoImports”:假的
如果使用Typescript
“typescript.suggest.autoImports”:假的
编辑:错误的自动导入发生是因为依赖关系树下的包中的此代码
该包可以位于本地node_modules目录中,也可以位于全局安装的引用包中。
1.在本地node_modules中搜索
declare module "console"
1.如果您在本地包中找到它,请运行
npm list [packageName]
以确定package.json中的哪个包依赖于其中包含控制台代码的包。如果在本地node_modules中找不到代码,您可以
1.在package.json中逐个删除包
1.在全局安装的模块中搜索控制台代码,这些模块可能被项目中的包引用
%USERPROFILE%\AppData\Roaming\npm\node_modules %USERPROFILE%\AppData\Local\Microsoft\TypeScript
我知道这不是一个简单的解决方案,但我希望它能有所帮助,在我的例子中,我有一个react-native-copilot -> rimraf -> node的参考,其中有控制台代码。删除react-native-copilot解决了这个问题。
nkhmeac63#
我发现的最优雅的解决方案是在项目中的某个地方创建虚拟
console.d.ts
文件:这将阻止自动导入。
图片来源:https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436
aor9mmx14#
如果您添加了一个用于插入
console.log
的代码片段并使用它,则不会自动导入“console”https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets
以下是我的片段:
lnvxswe25#
如果你像我一样忘记了“cl”,你可以在片段中使用多个前缀:)
yzuktlbb6#
防止这种情况发生的一种方法是修改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
idv4meu87#
一个解决方案可以是设置中的
"editor.snippetSuggestions": "top",
。显然,要定义console.log。