flutter - 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?感谢您的时间。
解决方案
虽然我不确定这不能正常工作,但它肯定不是我(Dart 扩展的作者)期望使用它的方式。在 WSL 中运行时,Dart 扩展在 Linux 领域运行,并假设 Flutter 进程也可能不成立(例如,它可能捕获 PID 并期望能够向它们发送信号)。
如果你想在 WSL 中运行,我建议在 WSL 中设置 Flutter SDK(它将下载 Dart SDK 的 Linux 版本)。但是,您可能会发现某些功能以这种方式无法正常工作(例如,WSL 实例可能看不到 Windows 中连接的设备)。
如果您没有真正需要使用 WSL,我建议您跳过它 - 这只是您可能不需要的额外复杂性。如果你确实需要它,我对用例很感兴趣(了解扩展的用户在做什么以避免这样的混淆总是很有用的)。
推荐阅读
- dataframe - 在 pyspark 中使用过滤条件求和
- c++ - c ++ lambda传递自动参数类型
- html - 使用 transform 属性为 div 的宽度设置动画
- reactjs - 如何修复未安装组件的更新?
- linux - 链接到 .so 文件中的特定符号版本
- selenium - 如何处理“等待”或“加载 Web 应用程序”
- excel - VBA 如何使用 offset(x,x) 减去 offset(x,x).=value.copy 执行计算
- python - 在 Visual C++ 中嵌入 Python
- sql - SQL 中的函数限制无法正常工作
- ruby - 为什么在 Ruby 中使用 SecureRandom.uuid 创建的字符串需要 77 个字节?