nhập vscode nhập bảng điều khiển nhập khẩu = yêu cầu (bộ điều khiển trực tiếp tự động


145
import console = require("console");

console.<< Tôi gõ. và ở trên được nhập tự động trong VScode. Bất cứ ai cũng biết làm thế nào để vô hiệu hóa điều đó?

(Tôi cho rằng đó là một trong những tiện ích mở rộng của tôi. Có lẽ là đẹp hơn.)

chỉnh sửa: nó chỉ xảy ra trong môi trường React Typecript. không trong Bản in mà không có phản ứng.


Bất kỳ may mắn với điều này? Tôi đang gặp vấn đề tương tự
user2517182

Bên cạnh cách giải quyết trong các câu trả lời, có vẻ như đây là một lỗi trong VSCode được giới thiệu với bản cập nhật cuối cùng. Một báo cáo lỗi tương ứng được điền vào đây: github.com/Microsoft/vscode/issues/70157
ofhouse 16/03/19

1
Các TS / JS hàng đêm Plugin sửa chữa này cho VSCode 1.36+
Andrew Li

Câu trả lời:


126

Tuyên bố miễn trừ trách nhiệm: đây không nên được coi là "giải pháp" nhưng nó đơn giản / nhanh nhất.

Câu trả lời này giả sử bạn đang sử dụng VSCode. Các IDE khác nên tương tự.

  1. Bắt đầu gõ console
  2. Nhấp vào nhập hoặc nhập ., cho phép IntelliSense thêmimport console = require("console");
  3. Ctrl + nhấp (hoặc F12 hoặc Cmd + nhấp vào macOS) trên require("console")
  4. Nhận xét mã này:
declare module "console" {
    export = console;
}

9
Nếu đây là Reddit, tôi sẽ tặng bạn vàng cho cái này. Cảm ơn :)
FearMediocrity

5
Hoạt động độc đáo. Nó phải là Cmd + nhấp vào "console"mặc dù, nhưng đó là một chi tiết. Cảm ơn!
Loolooii

Nếu gặp sự cố với nhấp chuột F12 hoặc Cmd +, nhấp chuột phải vào "bảng điều khiển" và sau đó "đi đến định nghĩa" cũng hoạt động (ít nhất là trên osx)
imekinox

2
Đây là chỉnh sửa một tệp bên trong thư mục node_modules có nghĩa là 'sửa chữa' sẽ được đặt lại sau khi bạn thực hiện cài đặt lại npm. Tôi nhận được nó là một sửa chữa nhanh chóng nhưng không có nơi nào gần chấp nhận được
Railto

Đối với tất cả những người không muốn sửa đổi tệp khai báo, Plugin hàng đêm TS / JS sửa lỗi này cho VSCode 1.36+
Andrew Li

31

Tôi đã trải nghiệm điều này cũng như nó có vẻ là một vấn đề với tính năng Tự động nhập trong VSCode. Vô hiệu hóa tất cả các tiện ích mở rộng dường như cũng không làm cho nó biến mất.

Như một giải pháp thay thế, bạn có thể vô hiệu hóa tự động nhập trong cài đặt.

Nếu bạn sử dụng Javascript

"javascript.suggest.autoImports": sai

Nếu bạn sử dụng Bản in

"typecript.suggest.autoImports": sai

nhập mô tả hình ảnh ở đây

EDIT: Autoimport bị lỗi xảy ra do mã này trong một gói xuống cây phụ thuộc

declare module "console" {
    export = console;
}

Gói có thể được đặt trong thư mục node_modules cục bộ của bạn hoặc trong gói được tham chiếu được cài đặt trên toàn cầu.

  1. Tìm kiếm node_modules cục bộ của bạn cho declare module "console"
  2. Nếu bạn tìm thấy nó trong gói cục bộ, hãy chạy npm list [packageName]để xác định gói nào trong gói.json phụ thuộc vào gói có mã giao diện điều khiển trong đó.

Nếu bạn không tìm thấy mã trong node_modules cục bộ của mình, bạn có thể

  1. Loại bỏ từng gói một trong gói.json

  2. Tìm kiếm mã bảng điều khiển trong các mô-đun được cài đặt toàn cầu có thể được tham chiếu bởi các gói trong dự án của bạn

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

Tôi biết nó không phải là một giải pháp chuyển tiếp thẳng nhưng tôi hy vọng nó có ích, trong trường hợp của tôi, tôi đã có một tài liệu tham khảo từ nút phản ứng tự nhiên -> rimraf -> có mã giao diện điều khiển trong đó. Loại bỏ phản ứng-bản địa-copilot đã giải quyết vấn đề.


8
Vâng, điều đó cũng gây ra không có hoạt động nhập khẩu tự động khác nữa. Tôi thích tính năng này và không chấp nhận đây là câu trả lời ...: - D (cảm ơn!) Phải có một giải pháp khác. Tôi vẫn đang tìm kiếm là tốt.
dragonsoul

Tôi phát hiện ra rằng điều đó không xảy ra khi bạn tạo một dự án mới với tạo-Reac-app my-app --scripts-version = Reac-scripts-ts để nó phải được kết nối với các thiết lập không gian làm việc bằng cách nào đó.
dragonsoul

Tôi đã làm một số nghiên cứu thêm, xem câu trả lời chỉnh sửa, hy vọng bạn tìm thấy nó trong dự án của bạn!
KvD

1
Vâng, điều đó thực sự hiệu quả. Tôi đang nghĩ, đây có phải là lỗi VSCode hoặc từ những người tạo ra các gói này không? Đối với tôi, đó là trong @ type / node và @ type / Reac-dom. Cảm ơn bạn :-)
dragonsoul

4
đã tìm thấy mã bị lỗi bên trong "typecript/3.2/node_modules/@types/node/index.d.ts" nằm trong ~/Library/Caches/thư mục. Tôi đang trên máy mac. Vì nó trong không gian làm việc lưu trữ của tôi, tôi chỉ xóa mã thực tế: `` `lang-js mô-đun khai báo" console "{export = console; } `` `Và nó đã hoạt động!
jcperez-ch

17

Giải pháp tao nhã nhất mà tôi tìm thấy là tạo console.d.tstệp giả ở đâu đó trong dự án của bạn:

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

Điều này sẽ ngăn việc nhập tự động.

Tín dụng: https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436


Đây là một giải pháp tao nhã có thể được kiểm tra và sẽ hoạt động trên nhiều không gian làm việc và thiết bị. Cảm ơn!
phsource

4
Tại sao tôi nhận được Biểu thức của một nhiệm vụ xuất khẩu phải là một định danh hoặc tên đủ điều kiện trong bối cảnh môi trường xung quanh.ts (2714) Hồi? Có thể liên quan đến một số cài đặt trong tsconfig.json của tôi?
Mehmet N. Yarar

Có, nó có thể ... Bạn có thể kiểm tra cài đặt của tôi ở đây: github.com/codechecks/monorepo/blob/master/tsconfig.json Nó hoạt động với tệp console.d.ts
Krzysztof Kaczor

17

Nếu bạn thêm một đoạn mã để chèn console.logvà sử dụng thay vào đó, sẽ không có tự động nhập "bảng điều khiển"

https://code.visualstudio.com/docs/editor/userdDefsnippets#_create-your-own-snippets

đây là đoạn trích của tôi:

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

5
Mặc dù không phải là một giải pháp, nhưng nó thông minh và nó hoạt động khi bạn không thể xóa gói gây ra sự cố, như đã nêu trong hầu hết các câu trả lời được bình chọn.
tibuurcio

Tôi đồng ý với @tibuurcio. Cách giải quyết thông minh, nhưng tôi không thể chấp nhận điều này như một giải pháp ...
dragonsoul

đã không làm việc. Nó vẫn tự động nhập sau khi tôi viết console rồi bấm "." nó tự động nhập khẩu
Mr.Ghamkhar

1
@ mr-ghamkhar nếu bạn muốn sử dụng đoạn trích trên, bạn chỉ cần viết "cl" hoặc bất cứ điều gì bạn đặt vào "tiền tố". Nó cần phải là một cái gì đó khác với "bàn điều khiển" để có thể tránh hành vi tự động nhập.
Giorgio

9

Nếu bạn thích tôi quên "cl", bạn có thể sử dụng nhiều tiền tố trong đoạn trích :)

{
    "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
Câu trả lời đúng là lười biếng :)
FOLOF

Đây là giải pháp tốt nhất cho tôi, vì bạn không cần chỉnh sửa các gói nội bộ
Harrison

5

Một cách để ngăn điều này xảy ra là sửa đổi tệp tsconfig.json để giới hạn nhóm các loại được tự động nhập vào dự án của bạn.

Tôi đã có vấn đề tương tự, và tôi đã sửa nó bằng cách thêm:

types: []

vào tệp tsconfig.json của tôi. Điều này làm là vô hiệu hóa TypeScript (và bởi VSCode mở rộng) khỏi tự động nhập tất cả các gói nút có @types/trong cấu hình dự án. Điều này không ngăn TS nhập các định nghĩa loại đó nếu bạn nhập rõ ràng một gói bằng các loại đó.

Trong trường hợp cụ thể của tôi, consoleđịnh nghĩa đã đến từ@types/node , đã được nhập vào dự án như một phần phụ thuộc của Storybook. Tuy nhiên, dự án của tôi là một dự án webpack, dự định chạy trong trình duyệt, do đó, việc nhập các loại Node.js vào mã nguồn của tôi không có ý nghĩa gì. Tập hợp cơ sở của các loại mà bạn muốn sử dụng trong trình duyệt là loại dom, không phải loại nút.

Tùy thuộc vào dự án của bạn, bạn có thể phải thêm một cách rõ ràng tập hợp các gói loại cơ sở vào tham số loại ( types: ["dom", "react"]v.v.). Tuy nhiên, trong trường hợp của tôi điều này hóa ra là không cần thiết, dự án của tôi đã có thể biên dịch tốt với một danh sách trống. Và xu hướng VSCode tự động nhập 'bảng điều khiển' dường như đã biến mất hoàn toàn; Tôi đã không nhận thấy bất kỳ hiệu ứng xấu khác cho đến nay.

Thông tin thêm về các loại cài đặt trong tsconfig.json tại đây: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.