为什么我不能在dir中运行dart文件?

时间:2013-07-08 13:47:43

标签: dart packages project-structure dart-pub

我有一个简单的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放在项目的根目录中?对此有什么规定吗?或者如何解决此错误?

1 个答案:

答案 0 :(得分:2)

修改
pub install已重命名为pub getpub 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应用程序。