import - 我通过 `import ' models.dart' ;`, it can' 导入另一个文件进行编译

标签 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!

我很困惑:(

最佳答案

在要导入的每个文件中添加库指令,一切都会正常工作。

就您而言:

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

关于import - 我通过 `import ' models.dart' ;`, it can' 导入另一个文件进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17621221/

相关文章:

dart - 获取在 Dart 中使用 <polymer-element> 创建的自定义元素的宽度?

flutter - 如何在 Flutter CustomPainter 中使用贝塞尔曲线绘制形状

node.js - 如何在没有整个模块的情况下将类型导入 Typescript?

php - 使用 php 将内容从谷歌电子表格导入 MySql

python解释器在调用导入函数后返回空白字典

android - 为什么这个 future 永远无法完成?

flutter - 摆脱 2 个容器之间的细线 - Flutter/Dart

r - 在 R 中使用文件名导入多个 Excel 文件

android - 处理 "cannot find symbol class"错误

firebase - 在 Flutter 中计算排行榜排名