不能在Dart CLI应用程序中使用"cd"命令



我正在开发Dart CLI应用程序。我已经将Flutter项目从git克隆到一个目录中,现在我想进入这个目录并在其中运行flutter pub get。但我遇到了错误。顺便说一句,我用的是dcli软件包。

这是我的方法:

void _runFlutterPubGet(String path) {
'cd $path'.run;
'flutter pub get'.run;
}

错误如下:

Unhandled exception:
cd C:UsersbaranSoftwareSelfuse_templatebintrial_app 
exit: 2
reason: Could not find cd on the path.
wait_for_ex.dart : waitForEx : 21
runnable_process.dart : RunnableProcess._waitForStart : 300
runnable_process.dart : RunnableProcess.start : 278
runnable_process.dart : RunnableProcess.run : 167
run.dart : start : 249
string_as_process.dart : StringAsProcess.run : 80
use_template_base.dart : UseTemplateBase._runFlutterPubGet : 281
use_template_base.dart : UseTemplateBase.exec : 235
use_template.dart : main : 45
isolate_patch.dart : _delayEntrypointInvocation.<anonymous closure> : 295
isolate_patch.dart : _RawReceivePortImpl._handleMessage : 192

我已经将代码更改为:

void _runFlutterPubGet(String path) {
run('flutter pub get', workingDirectory: path, runInShell: true);
}

正如@julemand101所言。解决了问题。谢谢你的回答。

仅供参考:cd是命令shell解释器cmd.exe的内部命令。因此没有cd.com/cd.exe,您可以调用它。当您像现在这样启动shell(runInShell=true(时,您可以在shell解释器接管时提交cd命令。

只是后续行动。

我是dcli的作者。

你不应该在任何程序中使用cd。

我写了一篇关于它的文章。https://dcli.onepub.dev/dcli-api/the-evils-of-cd

在需要的地方,dcli函数采用一个工作目录(正如您所发现的(,理想情况下应该传递一个绝对路径。

最新更新