随着我们正在从事的项目越来越大,一位同事开始面临许多涉及pubspec.yaml
的问题。他曾经通过手动删除Dart的缓存依赖项来摆脱它们,但是这次他遇到了一个看起来无法解决的问题。
在我们自己的程序包的lib
目录中导入库时,import 'package:...'
不起作用,仅相对路径有效。例如,考虑以下结构:
my_package
└─ lib
├─ utils.dart
└─ api.dart
如果他尝试在utils.dart
内导入api.dart
,则只能使用相对路径:
import 'utils.dart'; // Works!
import 'package:my_package/utils.dart'; // Error: Target of URI doesn't exist: package:my_package/utils.dart.
这种行为是不一致的,因为项目在相同的上下文中有许多其他模块,不需要使用相对路径导入。此外,团队中没有其他人遇到这个问题,但是突然团队中的另一个人开始遇到同样的问题。它在传播!我们尝试重新安装Dart,Flutter,IntelliJ,但错误仍然存在。
如果我们删除项目并再次从git克隆项目,问题将消失。但是,令人惊讶的是,一旦我们重新启动并使IntelliJ的缓存无效,该错误就会返回。
奇怪的是,这些错误不会干扰项目的执行,它仍然可以运行。但是由于导入已中断,所以IDE无法链接到文件,也不会进行常规语法分析。
关于解决此问题的任何想法,甚至是如何开始寻找解决方案的想法?
答案 0 :(得分:1)
此问题已在Flutter v1.9.1 + hotfix.2。中解决。