Câu trả lời này nhằm giúp những người khác tránh mất 1-2 giờ để khắc phục sự cố và từ từ tìm ra các giải pháp khác nhau cho các sự cố thường gặp khi sử dụng WSL cho thiết bị đầu cuối trong VS Code. Nó không đề cập đến việc cài đặt các gói cụ thể, mà là các gói phổ biến có thể không cài đặt đúng cách như các gói phụ thuộc khi cài đặt những thứ phụ thuộc vào sự hiện diện của chúng và sửa các cài đặt chung liên quan.
Tóm tắt các bước
- WSL đã được cài đặt
- Mã VS (hoặc IDE khác) được định cấu hình cho thiết bị đầu cuối
- NPM đã cài đặt & sửa đường dẫn trong .profile (có thể trợ giúp với các công cụ khác)
- build-Essential được cài đặt (trợ giúp với bất kỳ công cụ nào sử dụng make / gcc / etc)
- VS Code Tasks sử dụng WSL
- Bổ sung
Bắt đầu & Yêu cầu
- Bạn phải cài đặt WSL . (Có nghĩa là bạn phải chạy Windows 10 64 bit , với các bản cập nhật thích hợp) Làm theo hướng dẫn cài đặt nếu chưa được cài đặt. Điều này sẽ yêu cầu một số khởi động lại.
Cấu hình đầu cuối mã VS
Hoặc phím tắt CTRL+ ,hoặc File
→ Preferences
→Settings
Ở trên cùng bên phải của cửa sổ chỉnh sửa, hãy đảm bảo rằng bạn đang làm việc trong ngữ cảnh phù hợp với mình: Cài đặt người dùng hoặc Cài đặt không gian làm việc .
Trong thanh tìm kiếm cài đặt, hãy nhập terminal.integrated.shell.windows
(hoặc bất cứ thứ gì khiến bạn đủ lâu)
Tìm cài đặt trong tệp cài đặt thực tế, sử dụng Edit
(di chuột qua dòng, nó sẽ ở bên trái: trên màn hình cảm ứng không có chuột, bạn có thể chỉ cần chạm vào bên trái của dòng) và chọnReplace in Settings
Trong ngăn bên phải, sửa đổi mục nhập được tạo trong tệp json đã sửa đổi: thay thế cài đặt trước đó bằng
"C:\\WINDOWS\\Sysnative\\bash.exe"
Các IDE khác: IntelliJ
Mở Settings / Tools / Terminal và đặt trường "Shell path" thành "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"
Làm cho WSL Ubuntu Bash Terminal của bạn hoạt động cho nhà phát triển
Khi bạn sử dụng CTRL+ `để mở thiết bị đầu cuối, bây giờ bạn sẽ có một thiết bị đầu cuối bash.
Nếu đây là lần đầu tiên bạn chạy bash.exe, bạn có thể được hỏi về cách cài đặt Ubuntu. Làm vậy. Sau khi cài đặt xong, hãy chọn tên người dùng và mật khẩu của bạn để sử dụng trong WSL Ubuntu. Những điều này không nhất thiết phải trùng với tài khoản Windows hiện tại của bạn và điều quan trọng cần lưu ý là chúng sẽ không thay đổi dựa trên những thay đổi đối với mật khẩu tài khoản Windows của bạn.
Sau khi hoàn tất, bạn sẽ có một dấu nhắc lệnh bash trong thiết bị đầu cuối của mình.
Lưu ý rằng không giống như git-bash trên Windows, đây là một môi trường riêng biệt. Mặc dù nó có thể được sử dụng để khởi chạy phần mềm Windows bên ngoài chính nó, bạn sẽ cần các gói Ubuntu thích hợp để chạy chúng trong thiết bị đầu cuối thực tế.
Hiện tại, WSL không được tải với mọi thứ bạn có thể mong đợi hoặc đã quen với việc có và một số thứ có thể xung đột với phần mềm bạn đã tải trong Windows, dựa trên cài đặt cấu hình mặc định.
Cập nhật & git
Lưu ý: Tôi sẽ ghi lại những điều này dưới dạng sudo cho những người đơn giản chỉ cần các phần đơn lẻ của điều này, nhưng một tùy chọn khi bắt đầu là thay vào đó sudo su
và chỉ cần chạy các lệnh sau mà không cần sudo.
Đảm bảo rằng các gói Ubuntu của bạn được cập nhật:
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove
Cài đặt git:
sudo apt-get install git
Node.js & NPM
Nếu bạn đã tải Node hoặc NPM trong Windows, việc chạy chúng trong Ubuntu có thể gặp sự cố do sự cố đường dẫn. Vì vậy, bạn cần cài đặt phiên bản gốc Ubuntu và đảm bảo rằng chúng được sử dụng thay thế.
Đầu tiên, cài đặt node.js bằng NPM . (thay thế: cài đặt NVM và sử dụng nó để cài đặt node.js)
Sau khi cài đặt, chạy các lệnh npm có thể sẽ không thành công: ví dụ: npm -v
có thể sẽ cung cấp cho bạn:
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")
Điều này là do một vấn đề liên quan đến một giải pháp khá đơn giản . Sử dụng trình soạn CLI yêu thích của bạn (ví dụ như nano
, vim
, emacs
, cat
và sed
... vv), mở của bạn~/.profile
nano ~/.profile
Lưu ý: KHÔNG cố gắng chỉnh sửa tệp Linux bằng các công cụ của Windows . (Cảm ơn nhận xét của @ david-c-rankin về liên kết chính thức với dòng chữ màu đỏ đậm giải thích điều này) Nếu bạn không muốn sử dụng trình chỉnh sửa CLI cho điều này trong thiết bị đầu cuối, hãy xem phần cuối của bài đăng này để biết liên kết về cách để chạy GUI.
Hiện tại, biến PATH bash mặc định trong WSL là
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Đó là chèn đường dẫn cửa sổ sau hai thư mục nhị phân đầu tiên. Thật không may, điều này không dẫn đến việc / usr / bin được sử dụng trước khi các cửa sổ được cài đặt npm, vì vậy hãy thêm nó vào trước $ PATH cuối cùng:
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
Lưu ra, sau đó tải lại thiết bị đầu cuối hoặc chỉ nguồn tệp đường dẫn
source ~/.profile
Xây dựng-thiết yếu
Nếu bạn đang sử dụng bất kỳ thứ gì yêu cầu biên dịch hoặc sử dụng make, gần như đảm bảo rằng bạn sẽ cần cài đặt những thứ này; vì vậy nếu bạn không cài đặt chúng trong khi cài đặt node.js, hãy làm như vậy. Sẽ dễ dàng hơn nhiều nếu chỉ đơn giản sử dụng gói xây dựng thiết yếu hơn là cố gắng cài đặt mọi thứ riêng lẻ.
Lưu ý rằng các gói như La bàn dựa trên Ruby FFI sẽ không thành công nếu không có các gói này. Nếu bạn gặp sự cố khi cài đặt và chạy một công cụ đúng cách, hãy đảm bảo rằng bạn đã cài đặt gcc and make có thể là một nơi tốt để bắt đầu.
sudo apt-get install -y build-essential
Chạy công việc bằng Ubuntu
Lưu ý rằng nếu bạn sử dụng các task.json của VS Code để chạy các tác vụ xây dựng, thì theo mặc định, nó sẽ vẫn chạy chúng bằng hệ thống con Windows thay vì hệ thống Ubuntu. Đôi khi đây có thể là những gì bạn muốn, nhưng nếu bạn vừa hoàn tất cài đặt grunt-cli trong Ubuntu chứ không phải Windows, thì có lẽ là không.
VS Code gần đây đã có bản cập nhật tháng 5 năm 2017 về cách Tasks hoạt động cho phép nó đặt trình chạy tác vụ làm thiết bị đầu cuối . Đây là cách dễ nhất để di chuyển các nhiệm vụ.
Đơn giản chỉ cần đặt
"runner": "terminal",
trong của bạn tasks.json
và bạn đã hoàn tất (giả sử bạn có tất cả các công cụ thích hợp mà bạn đang cố gắng chạy hiện đã được cài đặt trong WSL Ubuntu).
Điều này rất dễ di chuyển, lý tưởng là không yêu cầu thay đổi giữa các hệ thống có hoặc không có WSL hoặc với các hệ điều hành khác, và là phương pháp tôi muốn đề xuất.
Hiện tại, phương thức này sinh ra một TERMINAL
phiên bản tab khác (được truy cập từ trình đơn thả xuống). Bạn vẫn có thể thiết lập những người theo dõi thích hợp, nhưng điều đó có nghĩa là nó không còn nằm trên OUTPUT
tab nữa.
Phương thức cũ có khả năng gọi shell WSL Ubunutu Bash và hiển thị nó OUTPUT
, đồng thời liên quan đến việc gọi bash.exe với đối số -c hoặc sử dụng tập lệnh shell. Thật không may, nó không đúng ngữ nghĩa, vì chúng ta đang thực hiện bash
lệnh của mình và chuyển nó những gì chúng ta muốn chạy dưới dạng đối số. Điều này cũng có nghĩa là nó không nhanh chóng di động đến các hệ thống khác.
Bạn có thể sử dụng cùng một vị trí mà bạn đã cung cấp Mã VS trước đó cho chính thiết bị đầu cuối, C:\\WINDOWS\\Sysnative\\bash.exe
làm giá trị chocommand
Đặt phần tử đầu tiên của args
mảng là -c
và phần tử thứ hai làm lệnh bạn muốn chạy ( ghi có vào nửa sau của câu trả lời này ).
Ngoài ra, bạn có thể chạy một tập lệnh shell như đã thấy ở đây .
Các thông tin hữu ích khác
Bạn muốn khởi động VSCode trong Windows từ dòng lệnh WSL Bash ?
Bạn muốn có giao diện đồ họa cho WSL Ubuntu của mình ? (điều này sẽ cho phép bạn thực hiện những việc như sử dụng trình chỉnh sửa GUI Linux cho các tệp trong chính hệ thống Ubuntu: không chỉnh sửa chúng bằng các công cụ chỉnh sửa Windows, xem nhận xét / ghi chú trong phần trên npm)
Bạn muốn xây dựng (xem phần trên về cách thiết lập VS Code Tasks đúng cách cho WSL) và gỡ lỗi hoàn toàn trong WSL Ubuntu ? (điều này cho thấy cách làm như vậy bằng cách sử dụng gdb, nhưng pipeTransport
khái niệm này có thể được sử dụng với các trình gỡ lỗi khác) (tín dụng cho câu trả lời này , nhưng câu trả lời trước nó cũng cung cấp một phương thức sử dụng vòng lặp cục bộ có thể tỏ ra hữu ích)