导入的资源导致不明确的参考错误

时间:2013-07-23 11:20:30

标签: dart dart-webui

当使用包中的组件时,我遇到了一个模糊的引用错误,其中主项目也引用了该组件的共享依赖项。我已经概述了一个示例项目和一个依赖项目来说明问题。

我的目标是拥有一个UI组件的基础库,以及一个可以继承这些组件的独立项目。我目前无法继承这些组件,因为一旦我这样做,最终会有两个编译版本 - 导致模糊的引用错误。

Dart SDK 0.6.5.0 r25017


我的包裹

这是我创建并导入到当前项目中的包。它定义了一个Web组件,并依赖于Web UI

MyPackageComponent.html

<!DOCTYPE html>
<html><body>
    <element name="my-package-component" constructor="MyPackageComponent" extends="span">
        <template>My Package Component</template>
        <script type="application/dart" src="MyPackageComponent.dart"></script>
    </element>
</body></html>

MyPackageComponent.dart

import "package:web_ui/web_ui.dart";
class MyPackageComponent extends WebComponent
{
    MyPackageComponent();
}

我的项目

这是主要项目。它定义了一个派生的 Web组件,并依赖于My PackageWeb UI

MyLocalComponent.html

<!DOCTYPE html>
<html><body>
    <element name="my-local-component" constructor="MyLocalComponent" extends="span">
        <template>My Local Component</template>
        <script type="application/dart" src="MyLocalComponent.dart"></script>
    </element>
</body></html>

MyLocalComponent.dart

请注意,MyLocalComponentMyPackageComponent的子类。

import "package:MyPackage/MyPackageComponent.dart";
class MyLocalComponent extends MyPackageComponent
{
    MyLocalComponent();
}

的index.html

<!DOCTYPE html>
<html><head>
    <link rel="import" href="package:MyPackage/MyPackageComponent.html"/>
    <link rel="import" href="MyLocalComponent.html"/>
</head><body>
    <my-local-component></my-local-component>     <!-- REF 1 -->
    <my-package-component></my-package-component> <!-- REF 2 -->
    <!-- Dart scripts etc. -->
</body>

结果

如果我只使用Index.html中的本地组件(参见 REF 1 ),那么一切运行正常。当我使用打包的组件(参见 REF 2 )时,我遇到以下错误:

Internal error: 'file:[omitted]/MyProject/src/out/Index.html.dart': Error: line [omitted] pos [omitted]: ambiguous reference: 'MyPackageComponent' is defined in library 'file:[omitted]/MyProject/src/out/_from_packages/MyPackage/MyPackageComponent.html.dart' and also in 'package:MyPackage/MyPackageComponent.dart'
  __t.component(new MyPackageComponent()..host = __e0);
                    ^ [omitted]/MyProject/src/out/index.html_bootstrap.dart:0

我不确定我做错了什么或者这是一个错误。我不太可能不能使用其他软件包中的资源。

研究

out目录中有一个名为_from_packages的自动生成的文件夹似乎是模糊引用的来源。 MyPackageComponentpackages目录中都定义了MyPackageComponent.dart

似乎Web UI编译器正在为导入的packages/MyPackage/MyPackageComponent.dart生成一个类(由导入的组件专门使用),而My Project中的原始类除外{{1}}中的原始文件。 }。

0 个答案:

没有答案