繁体   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