首页 > 解决方案 > VSCode 无法识别 Dart SDK(在 WSL 上运行)

问题描述

我在我的 Windows 10 机器上的 C/Users/OEM/Documents/flutter 上安装了 Windows 版本的 Flutter SDK,但是通过 WSL1 使用 ohmyzsh 作为 shell 并使用 VS Code 作为 IDE 来完成我的所有开发。我解决了由于 windows 样式语法导致的通过 zsh 运行颤振命令的错误:

(例如 /mnt/c/Users/OEM/Documents/flutter/bin/flutter:第 5 行:$'\r':找不到命令)

通过在我的主目录中创建一个 shell 脚本“flutter”来强制 flutter 命令通过 windows 运行:

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

现在这是我在颤振医生 -v 中的 zsh 输出:

[✓] Flutter (Channel stable, 2.5.3, on Microsoft Windows [Version 10.0.19042.1288], locale en-US) • 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) • C:\Users\OEM\AppData\Local\Android\sdk 中的 Android SDK • 平台 android-31,构建工具 31.0.0 • Java二进制文件位于:C:\Program Files\Android\Android Studio\jre\bin\java • Java 版本 OpenJDK 运行时环境(内部版本 11.0.10+0-b96-7249189) • 接受所有 Android 许可证。

[✓] Chrome - 为网络开发 • C:\Program Files\Google\Chrome\Application\chrome.exe 中的 Chrome

[✓] Android Studio(版本 2020.3) • C:\Program Files\Android\Android Studio 中的 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(网络) • chrome • web-javascript • Google Chrome 95.0.4638.69 • Edge(网络) • edge • web-javascript • Microsoft Edge 95.0.1020.30

一切正常。但是,VS Code 在打开项目时无法初始化 Flutter,因为它找不到 Dart SDK。这是错误日志的相关部分:

[上午 11:55:40] [常规] [信息] 发现于:[上午 11:55:40] [常规] [信息] /home/jack-r-buckley [上午 11:55:40] [常规] [Info]
/mnt/c/Users/OEM/Documents/flutter/bin [11:55:40 AM] [General] [Info] 要后过滤的候选路径:[11:55:40 AM] [General] [信息]
/home [上午 11:55:40] [常规] [信息]
/mnt/c/Users/OEM/Documents/flutter [上午 11:55:40] [常规] [信息]
返回 dart 未定义的 SDK 路径 [上午 11 点 55 分 40 秒] [常规] [信息] Flutter 未初始化,运行“颤振医生”以强制... [上午 11 点 55 分 42 秒] [常规] [信息] ( PROC 1145)记录过程的数据... [上午 11:55:43] [常规] [信息](PROC 1145)/mnt/c/Users/OEM/Documents/flutter/bin/flutter:第 5 行:$' \r':找不到命令 /mnt/c/Users/OEM/Documents/flutter/bin/flutter:第 13 行:$'\r':找不到命令 /mnt/c/Users/OEM/Documents/flutter/bin /flutter:第 14 行:设置:-:无效选项集:用法:设置 [-abefhkmnptuvxBCHP] [-o 选项名称] [--] [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] [常规] [信息] (PROC 1145) 已退出 (2, null)

我对开发很陌生,所以如果我的方法在这里不合适,请原谅我。有没有办法让 VS Code 在这个设置中识别我的 Dart SDK?还是我最好只使用powershell并完全摆脱WSL?感谢您的时间。

标签: flutterdartvisual-studio-codezshwindows-subsystem-for-linux

解决方案


虽然我不确定这不能正常工作,但它肯定不是我(Dart 扩展的作者)期望使用它的方式。在 WSL 中运行时,Dart 扩展在 Linux 领域运行,并假设 Flutter 进程也可能不成立(例如,它可能捕获 PID 并期望能够向它们发送信号)。

如果你想在 WSL 中运行,我建议在 WSL 中设置 Flutter SDK(它将下载 Dart SDK 的 Linux 版本)。但是,您可能会发现某些功能以这种方式无法正常工作(例如,WSL 实例可能看不到 Windows 中连接的设备)。

如果您没有真正需要使用 WSL,我建议您跳过它 - 这只是您可能不需要的额外复杂性。如果你确实需要它,我对用例很感兴趣(了解扩展的用户在做什么以避免这样的混淆总是很有用的)。


推荐阅读