簡體   English   中英

VSCode 無法識別 Dart SDK(在 WSL 上運行)

[英]VSCode doesn't recognise Dart SDK (running on WSL)

我在 Windows 10 機器上的 C/Users/OEM/Documents/flutter 上安裝了 Windows 版本的 Flutter SDK,但是我通過 WSL1 使用 ohmyzsh 作為外殼和 VS Code 作為 IDE 通過 WSL1 進行所有開發。 我解決了通過 zsh 運行 flutter 命令的錯誤,這些錯誤是由於 windows 風格的語法導致的:

(例如 /mnt/c/Users/OEM/Documents/flutter/bin/flutter: line 5: $'\\r': command not found)

通過在我的主目錄中創建一個 shell 腳本“flutter”來強制 flutter 命令在 Windows 中運行:

    #!/bin/bash
cmd.exe /c flutter.bat $@

現在這是我從 flutter doctor -v 在 zsh 中的輸出:

[✓] Flutter(通道穩定,2.5.3,在 Microsoft Windows [版本 10.0.19042.1288],區域設置為美國) • Flutter 版本 2.5.3,位於 C:\\Users\\OEM\\Documents\\flutter • 上游存儲庫https:/ /github.com/flutter/flutter.git • 框架修訂版 18116933e7(3 周前),2021-10-15 10:46:35 -0700 • 引擎修訂版 d3ea636dc5 • Dart 版本 2.14.4

[✓] Android 工具鏈 - 為 Android 設備開發(Android SDK 版本 31.0.0) • Android SDK 位於 C:\\Users\\OEM\\AppData\\Local\\Android\\sdk • 平台 android-31,build-tools 31.0.0 • Java二進制文件位於:C:\\Program Files\\Android\\Android Studio\\jre\\bin\\java • Java 版 OpenJDK 運行時環境(構建 11.0.10+0-b96-7249189) • 接受所有 Android 許可證。

[✓] Chrome - 為網絡開發 • Chrome 位於 C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe

[✓] Android Studio (version 2020.3) • Android Studio at C:\\Program Files\\Android\\Android Studio • Flutter 插件可以從以下位置安裝:🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart 插件可以從以下位置安裝:🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java 版 OpenJDK 運行時環境(構建 11.0.10+0-b96-7249189)

[✓] VS Code(版本 1.62.0) • VS Code 位於 C:\\Users\\OEM\\AppData\\Local\\Programs\\Microsoft VS Code • Flutter 擴展可以從以下位置安裝:🔨 https://marketplace.visualstudio.com/ items?itemName=Dart-Code.flutter

[✓] 連接的設備(2 個可用) • Chrome (web) • chrome • web-javascript • Google Chrome 95.0.4638.69 • Edge (web) • edge • web-javascript • Microsoft Edge 95.0.1020.30

一切正常。 但是,VS Code 在打開項目時無法初始化 Flutter,因為它找不到 Dart SDK。 這是錯誤日志的相關部分:

[11:55:40 AM] [General] [Info] 發現於:[11:55:40 AM] [General] [Info] /home/jack-r-buckley [11:55:40 AM] [General] [信息]
/mnt/c/Users/OEM/Documents/flutter/bin [11:55:40 AM] [General] [Info] 要后過濾的候選路徑:[11:55:40 AM] [General] [Info]
/home [11:55:40 AM] [General] [Info]
/mnt/c/Users/OEM/Documents/flutter [11:55:40 AM] [General] [Info]
為 dart 返回未定義的 SDK 路徑 [11:55:40 AM] [General] [Info] Flutter 未初始化,運行 'flutter doctor' 以強制... [11:55:42 AM] [General] [Info] ( PROC 1145) 記錄過程數據... [11:55:43 AM] [General] [Info] (PROC 1145) /mnt/c/Users/OEM/Documents/flutter/bin/flutter: line 5: $' \\r':未找到命令 /mnt/c/Users/OEM/Documents/flutter/bin/flutter:第 13 行:$'\\r':未找到命令 /mnt/c/Users/OEM/Documents/flutter/bin /flutter: line 14: set: - : invalid option set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] /mnt/c/Users/OEM/Documents/flutter /bin/flutter: line 15: $'\\r': command not found /mnt/c/Users/OEM/Documents/flutter/bin/flutter: line 17: unset: `CDPATH': not a valid identi… [11 :55:43 AM] [General] [Info] (PROC 1145) 退出 (2, null)

我對開發還很陌生,所以如果我的方法在這里偏離了,請原諒我。 有沒有辦法讓 VS Code 在這個設置中識別我的 Dart SDK? 或者我最好只使用powershell並完全擺脫WSL? 感謝您的時間。

雖然我不確定這是否行不通,但這肯定不是我(Dart 擴展的作者)希望使用它的方式。 在 WSL 中運行時,Dart 擴展在 Linux 環境中運行並假設 Flutter 進程也是如此,這可能不成立(例如,它可能會捕獲 PID 並期望能夠向它們發送信號)。

如果你想在 WSL 中運行,我建議在 WSL 中設置一個 Flutter SDK(它將下載 Dart SDK 的 Linux 版本)。 但是,您可能會發現某些功能無法以這種方式正常工作(例如,WSL 實例可能看不到 Windows 中連接的設備)。

如果您沒有真正需要使用 WSL,我建議您跳過它 - 這只是您可能不需要的額外復雜性。 如果您確實需要它,我對用例很感興趣(了解擴展的用戶正在做什么總是有用的,以避免像這樣混淆)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM