0

我有一个简单的飞镖项目,它的文件结构如下:

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';
^

它试图找到startfrom darttest/src/packages/start/start.dart,但实际上没有这样的文件,startin inside darttest/packages

我必须把server.dart里面的项目的根?这有什么规则吗?或者如何解决这个错误?

4

1 回答 1

2

EDIT
pub install已重命名为pub getpub install仍可作为 的未记录别名使用pub get
EDIT

pub install通过创建链接到包根目录packages 的主目录的附加目录来解决此问题。packages它假定您的包是根据 包布局指南进行布局的,并在、 和以及它们的子目录中创建一个链接packages目录。bin/test/example/

飞镖编辑器

如果您使用的是 Dart 编辑器,它可以自动创建指向主包文件夹的目录链接。

您需要从“文件”视图中文件的上下文菜单中选择“ Pub Install ” 。pubspec.yaml

命令行

如果要从命令行创建目录,可以使用pub install命令。您需要在pubspec.yaml文件目录中运行它。

PS:看看 Dart 包的包布局约定。他们建议将该bin文件夹用于独立的 Dart 应用程序。

于 2013-07-08T13:56:38.010 回答