我有这个设置:
├── bin
│ ├── all.dart
│ ├── details
│ │ ├── script1.dart
│ │ └── script2.dart
| | .....
all.dart 只需导入 script1.dart 和 script2.dart 并调用 main 。目标是在详细信息下有一堆可以单独运行的脚本。另外,我想要一个单独的 all.dart 脚本,可以一次运行它们。这将使调试单个脚本更简单,但仍允许所有脚本运行。
all.dart
import 'details/script1.dart' as script1;
import 'details/script2.dart' as script2;
main() {
script1.main();
script2.main();
}
script1.dart
main() => print('script1 run');
script2.dart
main() => print('script2 run');
所以,这是有效的,我在运行 all.dart 时看到了预期的打印语句,但我有两个问题。
首先,我必须在详细信息下软链接包。显然pub不会将包软链接传播到子文件夹。这是预期的还是有解决方法?
其次,在第二个import语句的点上, all.dart 中标记了错误。分析仪错误是:
The imported libraries 'script1.dart' and 'script2.dart' should not have the same name ''
所以我的猜测是因为我正在导入其他脚本,就像它们是库一样,并且因为它们没有顶部的库脚本[12]; 语句,所以它们都具有相同的名称 - 空名?
注意:最初我在 lib 下拥有所有这些,我可以将它们作为指定合适的 - package-root 的脚本运行命令行,即使它们是带有 main 的库。但是然后调试我需要在Dart编辑器中运行,这就是我将它们移动到 bin 的原因。也许编辑器应该允许 lib 下的 main 的库作为脚本运行,因为它们在编辑器之外运行就好了吗?脚本/库之间的实际差异似乎有点不必要(因为其他脚本语言允许文件都是)。
如何清理它?
答案 0 :(得分:1)
我不确定实际问题是什么。
如果库没有库语句,则使用空字符串作为名称。 只需添加一个具有唯一名称的库语句即可解决此问题。
向子目录添加符号链接可解决子目录中脚本导入的问题。 我是这样做的 在dartbug.com上多次提到符号链接应该完全消失,但我不知道这需要多长时间。
我从来没有试过在lib
中放置带有main的脚本文件,但它只是针对包布局约定,我想这就是为什么DartEditor不支持它。