vscode 가져 오기 가져 오기 콘솔 = require (“console”); 자동적으로


145
import console = require("console");

console.<<를 입력합니다. 이상은 VScode에서 자동으로 가져옵니다. 아무도 그것을 비활성화하는 방법을 알고 있습니까?

(내 확장명 중 하나라고 생각합니다. 아마도 더 예쁘습니다.)

편집 : React Typescript 환경에서만 발생합니다. 반응하지 않고 Typescript에 없습니다.


이것으로 운이? 같은 문제가 있습니다
user2517182

답변의 해결 방법 외에도 이것은 마지막 업데이트로 도입 된 VSCode의 버그 인 것 같습니다. 해당 버그 보고서는 다음과 같습니다 : github.com/Microsoft/vscode/issues/70157
ofhouse

1
TS / JS 야간 플러그인 1.36+ VSCode 이것을 해결
앤드류 리

답변:


126

면책 조항 : 이것은 "솔루션"으로 간주되어서는 안되지만 가장 간단하고 빠릅니다.

이 답변은 VSCode를 사용한다고 가정합니다. 다른 IDE도 비슷해야합니다.

  1. 타이핑 시작 console
  2. enter 또는 type을 클릭 .하여 IntelliSense 가 추가하십시오import console = require("console");
  3. Ctrl + 클릭 (또는 F12 또는 macOS의 Cmd + 클릭) require("console")
  4. 이 코드를 주석 처리하십시오.
declare module "console" {
    export = console;
}

9
이것이 레딧이라면, 나는 당신에게 이것에 대한 금을 줄 것입니다. 감사합니다 :)
FearMediocrity

5
잘 작동합니다. Cmd + 클릭해야 "console"하지만 세부 사항입니다. 감사!
Loolooii 19 :

F12 또는 Cmd + 클릭에 문제가있는 경우 "콘솔"을 마우스 오른쪽 버튼으로 클릭 한 다음 "정의로 이동"도 작동합니다 (적어도 osx)
imekinox

2
이것은 node_modules 디렉토리 내부의 파일을 편집 중이므로 npm을 다시 설치하면 '수정'이 재설정됩니다. 나는 그것이 신속하게 고칠 수 있지만 거의 수용 할 수있는 곳은 없다
Railto

선언 파일을 수정하지 않으려는 모든 사람들에게 TS / JS Nightly Plugin 은 VSCode 1.36+에서이를 수정합니다.
Andrew Li

31

나는 이것을 경험했지만 VSCode의 자동 가져 오기 기능에 문제가있는 것 같습니다. 모든 확장 기능을 비활성화해도 확장되지 않습니다.

해결 방법으로 설정에서 자동 가져 오기를 비활성화 할 수 있습니다.

자바 스크립트를 사용하는 경우

"javascript.suggest.autoImports": false

Typescript를 사용하는 경우

"typescript.suggest.autoImports": false

여기에 이미지 설명을 입력하십시오

편집 : 패키지의 종속성 트리 에서이 코드로 인해 잘못된 자동 가져 오기가 발생합니다.

declare module "console" {
    export = console;
}

패키지는 로컬 node_modules 디렉토리 또는 전체적으로 설치된 참조 패키지에있을 수 있습니다.

  1. 로컬 node_modules를 검색하십시오. declare module "console"
  2. 로컬 패키지에서 찾은 경우 실행 npm list [packageName]하여 package.json의 패키지가 콘솔 코드가 포함 된 패키지에 종속되는지 확인하십시오.

로컬 node_modules에서 코드를 찾지 못하면

  1. package.json에서 패키지를 하나씩 제거

  2. 프로젝트의 패키지에서 참조 할 수있는 전역으로 설치된 모듈에서 콘솔 코드를 검색하십시오.

% USERPROFILE % \ AppData \ Roaming \ npm \ node_modules % USERPROFILE % \ AppData \ Local \ Microsoft \ TypeScript

나는 그것이 직접적인 해결책이 아니라는 것을 알고 있지만, 그것이 도움이되기를 바랍니다. 내 경우에는 콘솔 코드가있는 react-native-copilot-> rimraf-> node에서 참조를했습니다. 반응 네이티브 코 파일럿을 제거하면 문제가 해결되었습니다.


8
예, 더 이상 다른 자동 가져 오기 작업이 발생하지 않습니다. 나는이 기능을 좋아하고 이것을 대답으로 받아들이지 않습니다 ... :-D (고마워요!) 다른 해결책이 있어야합니다. 나는 여전히 찾고 있습니다.
dragonsoul

create-react-app my-app --scripts-version = react-scripts-ts로 새 프로젝트를 만들 때 발생하지 않으므로 어떻게 든 작업 공간 설정에 연결해야한다는 것을 알았습니다.
dragonsoul

나는 더 많은 연구를했고, 편집 된 답변을보고, 당신이 당신의 프로젝트에서 그것을 찾았기를 바랍니다!
KvD

1
그렇습니다. 나는 이것이 VSCode 버그입니까, 아니면이 패키지의 제작자입니까? 나를 위해 그것은 @ types / node와 @ types / react-dom에있었습니다. 감사합니다 :-)
dragonsoul

4
~/Library/Caches/폴더 안에있는 "typescript/3.2/node_modules/@types/node/index.d.ts"에서 잘못된 코드를 찾았습니다 . 나는 맥에있다. 캐싱 작업 공간에 있으므로 실제 코드를 제거했습니다.```lang-js 선언 모듈 "console"{export = console; }```그리고 그것은 효과가 있었다!
jcperez-ch 2016

17

내가 찾은 가장 우아한 솔루션은 console.d.ts프로젝트 어딘가에 더미 파일 을 만드는 것입니다 .

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

자동 가져 오기가 방지됩니다.

크레딧 : https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436


이것은 체크인이 가능하고 여러 작업 공간과 장치에서 작동하는 우아한 솔루션입니다. 감사!
phsource

4
“내보내기 할당의 표현은 주변 컨텍스트에서 식별자 또는 정규화 된 이름이어야합니다 .ts (2714)”가 표시되는 이유는 무엇입니까? 내 tsconfig.json의 일부 설정과 관련이 있습니까?
Mehmet N. Yarar

네, 가능합니다 ... github.com/codechecks/monorepo/blob/master/tsconfig.json 여기에서 설정을 확인할 수 있습니다. console.d.ts 파일과 함께 작동
Krzysztof Kaczor

17

삽입 용 스 니펫을 추가하여 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"
    }
}

5
해결책은 아니지만 영리하며 대부분의 투표에서 언급 된 것처럼 문제를 일으키는 패키지를 삭제할 수 없을 때 작동합니다.
tibuurcio

@tibuurcio에 동의합니다. 영리한 해결 방법이지만 해결책으로 받아 들일 수는 없습니다.
dragonsoul

작동하지 않았다. 콘솔을 작성한 후에도 여전히 자동 가져 오기를 수행 한 다음 "."을 누릅니다. 그것은 자동차 수입
Mr.Ghamkhar

1
@ mr-ghamkhar 위의 스 니펫을 사용하려면 "cl"또는 "prefix"에 입력 한 내용 만 작성하면됩니다. 자동 가져 오기 동작을 피하려면 "콘솔"이외의 것이어야합니다.
Giorgio

9

"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"
    }   
}

1
정답은 게으르다 :)
FOLOF

내부 패키지를 편집 할 필요가 없기 때문에 이것이 가장 좋은 솔루션입니다
Harrison

5

이를 방지하는 한 가지 방법은 tsconfig.json 파일을 수정하여 프로젝트로 자동으로 가져 오는 유형 세트를 제한하는 것입니다.

나는이 같은 문제가 있었고 다음을 추가하여 고쳤다.

types: []

내 tsconfig.json 파일에. 이것이하는 일은 @types/프로젝트 구성에있는 모든 노드 패키지를 자동으로 가져 오지 않도록 TypeScript (및 확장명 VSCode)를 비활성화하는 것입니다 . 이러한 유형을 사용하여 패키지를 명시 적으로 가져 오는 경우 TS가 해당 유형 정의를 가져 오는 것을 막을 수는 없습니다.

필자의 경우, console정의는에서 시작되었으며 @types/nodeStorybook의 종속성으로 프로젝트로 가져 왔습니다. 그러나 내 프로젝트는 브라우저에서 실행하기위한 웹 팩 프로젝트이므로 Node.js 유형을 소스 코드로 가져 오는 것은 의미가 없습니다. 브라우저에서 사용하려는 기본 유형 세트는 노드 유형이 아니라 dom 유형입니다.

프로젝트에 따라 기본 유형 패키지 세트를 types 매개 변수 등에 명시 적으로 추가해야 할 수도 있습니다 types: ["dom", "react"]. 그러나 필자의 경우 이것이 불필요하다고 판명되었으므로 프로젝트는 빈 목록으로 잘 컴파일 할 수있었습니다. VSCode가 자동으로 '콘솔'을 가져 오는 경향은 완전히 사라진 것으로 보입니다. 나는 지금까지 다른 악영향을 발견하지 못했습니다.

tsconfig.json의 유형 설정에 대한 자세한 정보는 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html을 참조 하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.