【问题标题】:Cannot find referenced source: packages找不到引用的源:包
【发布时间】:2012-10-31 15:15:31
【问题描述】:

我有这个 pubspec.yaml

    name: Dart Pages
    description: The Dart platform.
    dependencies:
      web_components: any
      mongo_dart: any

然后我运行Tools > Pub Install,操作成功完成。

当我运行应用程序时,我收到以下错误:

    dart --enable-checked-mode web\page.dart
    Unable to open file: C:/Users/Samer/Documents/GitHub/dart/web/packages/mongo_dart/mongo_dart.dart'file:///C:/Users/Samer/Documents/GitHub/dart/web/page.dart': Error: line 1 pos 1: library handler failed
    #import("package:mongo_dart/mongo_dart.dart");

我使用的是 Windows 7 64 位和最新的 Dart 编辑器版本 0.2.1_r14167

问题似乎不仅在于 mongo_dart,还在于所有其他库,编辑器正在 /dart/web/packages 中寻找错误的包路径,而我在文件夹 /dart/packages 中看到了一个。

感谢您的帮助和时间。

【问题讨论】:

  • 您能否发表一下您的文件布局的说明?您能否确认 web 目录是否有指向 packages 目录的符号链接?您可以粘贴 page.dart 的代码吗?谢谢!

标签: dart dart-pub


【解决方案1】:

自从您创建“web”目录后,您是否运行过pub install?如果没有,请尝试。您需要在包含您的 Dart 入口点的目录中有一个“packages”目录,以便正确解析“package:”导入。

Pub 将为您创建这些目录,但它需要知道这样做。如果你在你的包中添加一个新目录,你需要再次运行 pub install 以便它添加一个“包”目录。

【讨论】:

    【解决方案2】:

    我在使用 TeamCity 时遇到了类似的问题。在我的开发机器上,我可以一遍又一遍地执行pub getpub build,效果非常好,但这仅在我第一次使用 TeamCity 构建解决方案时才有效。

    经过一番折腾,我终于发现,主要是通过反复试验,问题是由 TeamCity 在构建解决方案之前清理文件夹引起的。

    我找不到任何关于 pub 工作原理的合理文档,我不知道为什么这只是第一次工作,但我的试验和错误发现在 @987654325 之前的每个构建上执行 pub cache repair @ 最后是 pub build 可重复工作,我的 TeamCity 项目现在每次都能成功构建。

    【讨论】:

    • 这听起来很麻烦。我不知道 TeamCity。是否有可能同时运行多个pub get?也许有一种方法可以指定 pub-cache 目录以用于为每个实例使用不同的目录(必须查找它,而不是在我的计算机上)
    • 即使当前构建仍在运行,也可以将 TeamCity 配置为启动新构建,但这不是默认设置。也可以让 TeamCity 始终为特定构建使用相同的文件夹,并且不清除构建之间的内容;这解决了这个问题,但它不是一个干净的构建。我想知道,如果我从源代码管理中获得我的解决方案,它将构建到一个空文件夹中。
    【解决方案3】:

    我在这里有类似的东西,带有 js-interop 包。我将 ':' 更改为 '/' 并且成功了。

    原始声明:

        import("package:mongo_dart/mongo_dart.dart");
    

    修改后的声明:

        #import("package/mongo_dart/mongo_dart.dart");
    

    你也可以试试这个(它对我有用):

        import 'packages/mongo_dart/mongo_dart.dart';
    

    【讨论】:

    • 巧合的是,这有时可能有效,但您真的不想这样做。这样做会破坏传递性导入。如果 A 导入 B,而 B 使用上述语法导入 C,则不太可能正确解析。
    【解决方案4】:

    您可能需要在导入 mongo_dart.dart 的位置添加一个额外的库,然后将该库导入您的主库中。我知道这是一个奇怪的解决方案,但当我试图让 Google 地图在 Dart 中运行时,它对我很有用。

    更多:https://groups.google.com/a/dartlang.org/d/msg/misc/ORXJmmmH3fA/WIKyBik1e7sJ

    【讨论】:

      【解决方案5】:

      我在尝试导入 unittest 时遇到了类似的问题。我正在使用 dart 编辑器插件在 windows 7 64 位中运行 Eclipse 4.2。

      删除 c:\USERS\user>\AppData\Roaming\ 下的“pub”文件夹对我有用。

      这要归功于 darlang google 小组的 Samer Ali,请参阅 here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        • 1970-01-01
        • 1970-01-01
        • 2015-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多