我通过`import'sinsters.dart';`导入另一个文件,它无法编译

时间:2013-07-12 18:01:28

标签: import dart

我在项目中定义了很多dart文件,他们通过import导入了另一个文件:

controller.dart

import 'models.dart';

// dart code

app.dart

import 'models.dart';
import 'controller.dart';

// dart code

server.dart

import "app.dart";

main() {
  // 
}

更多dart文件

但是当我运行server.dart时,它会报告错误:

a library which is imported is missing a library directive: models.dart

这是什么意思?我是否必须将它们全部声明为库?

来自language specification,它说:

It is a compile-time error if the compilation unit found at the 
specified URI is not a library declaration.

似乎我们只能导入一个库,而不是普通文件。

但如果我定义了2个简单文件,

a.dart

import "b.dart";

main() {
   hello();
}

b.dart

hello() { print("hello!"); }

然后运行a.dart:

dart a.dart

可以打印hello!

我感到困惑:(

1 个答案:

答案 0 :(得分:2)

在要导入的每个文件中添加库指令,所有文件都可以正常工作。

在你的情况下:

<强> models.dart

library foo.models;    
// dart code

<强> controller.dart

library foo.controller;    
import 'models.dart';    
// dart code

<强> app.dart

library foo.app;
import 'models.dart';
import 'controller.dart';

// dart code

<强> server.dart

 // If not planned to be imported then the name may be omitted
library foo.bin.server;
import "app.dart";

main() {
  // 
}

请记住,将由其他库导入的每个库都需要唯一的名称。

通过预先添加包名称来命名库的最佳方法。

例如

包名称为"worker"

<强> LIB / worker.dart

library worker.worker

<强> LIB / work.dart

library worker.work