我有一个简单的dart项目,它有如下文件结构:
darttest tree
.
├── packages
│ ├── browser -> /Users/freewind/.pub-cache/hosted/pub.dartlang.org/browser-0.5.20/lib
│ ├── meta -> /Users/freewind/.pub-cache/hosted/pub.dartlang.org/meta-0.5.20/lib
│ ├── start -> /Users/freewind/.pub-cache/hosted/pub.dartlang.org/start-0.0.8/lib
│ └── unittest -> /Users/freewind/.pub-cache/hosted/pub.dartlang.org/unittest-0.5.20/lib
├── pubspec.lock
├── pubspec.yaml
└── src
└── server.dart
它使用库start,非常简单。
pubspec.yaml :
name: darttest
dependencies:
start: any
src / server.dart :
import 'package:start/start.dart';
void main() {
start(public: 'web', port: 3000).then((Server app) {
app.get('/').listen((request) {
request.response
.header('Content-Type', 'text/html; charset=UTF-8')
.send('Hello, dart');
});
});
}
当我在 darttest 目录并运行时:
➜ darttest dart src/server.dart
Unable to open file:
/Users/freewind/dev/workspace/darttest/src/packages/start/start.dart
'file:///Users/freewind/dev/workspace/darttest/src/server.dart': Error: line 1 pos 1:
library handler failed
import 'package:start/start.dart';
^
它尝试从start
中找到darttest/src/packages/start/start.dart
,但实际上,start
内的darttest/packages
没有这样的文件。
我是否必须将server.dart
放在项目的根目录中?对此有什么规定吗?或者如何解决此错误?
答案 0 :(得分:2)
修改强>
pub install
已重命名为pub get
(pub install
仍然可用作pub get
的无证件别名)
的修改
pub install
通过创建其他packages
来解决此问题 链接到根目录的主packages
目录的目录 你的包裹。它假设你的包装是按照规定布局的 package layout guide,并在packages
中创建链接的bin/
目录,test/
和example/
及其子目录
飞镖编辑
如果您使用的是Dart编辑器,它可以自动创建指向主包文件夹的目录链接。
您需要从文件视图中的pubspec.yaml
文件的上下文菜单中选择“发布安装”。
命令行
如果要从命令行创建目录,可以使用pub install
命令。您需要在pubspec.yaml
文件的目录中运行它。
PS:查看Dart套餐的Package layout conventions。他们建议将bin
文件夹用于独立的Dart应用程序。