我创建了一个简单的 Web 应用程序,但当我想运行它时,在"工具输出"中出现了以下信息:
在 "/home/reza/.pubcache/hosted/pub.dartlang.org/browser-0.10.0+2" 中找不到名为 "pubspec.yaml" 的文件。
该如何解决这个问题?
我使用的是 Ubuntu 14.04LTS 64位和 Dart 编辑器 1.7.2。
这件事情已经发生过好几次了:
对我来说最终解决方法是删除 pub 的缓存(在 OS X 上):
sudo rm -Rf /Users/<username>/.pub-cache
同时,在你项目的根目录下删除 packages 目录:
sudo rm -Rf .packages
然后在你的项目中再次运行 pub get
,但是确保你不是以 root 身份操作(使用 whoami
命令可以查看当前用户身份,使用 exit
命令可以退出 root 身份)。
.packages
中,所以我使用sudo rm -Rf .packages
来删除它。 - DomCould not find a file named "pubspec.yaml" in '/Users/<username>/.pub-cache/hosted/pub.dartlang.org/animated_widgets-1.1.0'
所以我通过以下步骤成功解决了问题:
sudo rm -Rf /Users/<用户名>/.pub-cache
flutter clean
dart pub get
flutter pub get
最终它终于起作用了。
dart pub get
帮我解决了问题。 - simodev/Users/<username>/.pub-cache
。 - sharbel okzandart pub get
,这正是我所缺少的。显然,它取决于导致错误的软件包,即在某些情况下,flutter pub get
可以解决问题,但有时您还需要执行dart pub get
。 - sharbel okzan运行flutter clean
命令,然后运行flutter pub get
命令。
看起来你的pub cache已经损坏了。你可以尝试在命令行中运行pub cache repair
,但我认为如果pubspec.yaml
文件丢失,这仍然无法解决问题(有一个关于此问题的开放问题 - 找到它:http://dartbug.com/21418)。请尝试删除文件夹/home/reza/.pubcache/hosted/pub.dartlang.org/browser-0.10.0+2
,然后在项目目录或DartEditor中运行pub get
。
.pub-cache
是怎么样的? - Günter Zöchbauerpub get
或 pub upgrade
了吗? - Günter Zöchbauer如果您的pubspec.yaml文件引用了其他pubspec文件,则也会发生这种情况。尝试从pubspec.yaml中删除路径,并替换为版本,例如:
flutter_local_notifications:
path: ../
到这里
flutter_local_notifications: ^4.0.1+1
这个解决方案适用于新版本的Flutter。如果你找不到pub缓存,你可以在下面找到它:
C:\Users\[用户名]\AppData\Local\Pub
删除Cache
文件夹
运行pub cache repair
运行flutter pub get
flutter clean
flutter pub get
终于成功了:flutter packages pub run build_runner build
,太棒了!
最近在运行 flutter doctor
命令后,遇到了一个非常类似的错误信息:
Command output:
Building flutter tool...
Could not find a file named "pubspec.yaml" in "/opt/flutter/.pub-cache/hosted/pub.dartlang.org/test-1.20.2".
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (9 tries left)
Could not find a file named "pubspec.yaml" in "/opt/flutter/.pub-cache/hosted/pub.dartlang.org/test-1.20.2".
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (8 tries left)
^CError: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (7 tries left)
解决方法:
sudo chmod -R g+rwx /opt/flutter
将组权限添加到文件夹树中注意 - 将Flutter升级到3.0后,问题重新出现。这似乎证实了默认的Flutter权限没有尊重所有新文件的组所有权。在修复组权限后,Flutter能够成功完成我的升级到3.0.1。
注意:我的最初错误指向了这个特定的文件夹。
/opt/flutter/bin/cache/pkg/sky_engine
我使用 touched
命令触碰了 pubspec.yaml 文件,并使用 cat
命令确认文件是否存在。文件已经存在且包含所有的 yaml 类型信息。
接下来,我通过 ls -ll
命令检查了权限,并发现我的 group 对目标文件夹中的 pubspec.yaml 文件没有正确的权限设置(我的用户账户并不拥有该文件夹,但我的 group 有访问权限)。
登录授权的用户账户后,我使用命令 sudo chmod -R g+rwx /opt/flutter/bin
更改了 group 的权限,并验证了目标文件夹中文件的权限。
最后,在项目文件夹中运行 flutter pub get
命令,一切顺利。
感谢David的回答,帮助我找到并删除了我的Mac中的pub缓存目录。
sudo rm -Rf /Users/<user-name>/Developer/flutter/.pub-cache
David提到的路径有所变化。
对于Windows系统,清理pub缓存可以解决问题。我也使用了Flutter版本管理器。
flutter pub cache clean
flutter pub get
如果您也使用 fvm
,只需在开头添加即可。
flutter pub get
命令拉取包,但是我用dart run build_runner ...
命令运行了 build_runner。然而,flutter
和dart
使用不同的工作目录。因此,请确保使用与您拉取包时相同的命令来运行 build_runner。 - Stacky