2013-07-08 4 views
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'; 
^ 

Он пытается найти start от darttest/src/packages/start/start.dart, но нет такого файла, фактически, start внутри darttest/packages.

Должен ли я положить server.dart в корень проекта? Есть ли какое-то правило для этого? Или как исправить эту ошибку?

+0

Вы используете редактор дротиков? Вам не хватает ссылки каталога в папку/package /. Вы можете создать их, запустив «Pub Install» в файле pubspec.yaml (контекстное меню). – Fox32

ответ

2

EDIT
pub install был переименован в pub get (pub install по-прежнему доступен в качестве незарегистрированного псевдонима для pub get)
EDIT

pub install решает эту проблему путем создания дополнительных packages каталогов, которые ссылаются на основной каталог packages в корне ваш пакет. Предполагается, что ваша упаковка выложена в соответствии с package layout guide, и создает связанный packages каталог в bin/, test/ и example/, а также их подкаталоги

Dart Editor

Если вы используя Dart Editor, он может автоматически создать ссылку каталога в папку основного пакета.

Вы должны выбрать «Pub Установите» из контекстного меню на pubspec.yaml файл в окне файлов.

Командная строка

Если вы хотите создать каталог из командной строки, вы можете использовать команду pub install. Вам нужно запустить его в каталоге вашего файла pubspec.yaml.

PS: Посмотрите на Package layout conventions на пакеты Дартс. Они рекомендуют использовать папку bin для автономных приложений Dart.

+0

Спасибо, я не использую Dart Editor, вместо этого я использую командную строку с Dart SDK. Мне нужно создать ссылку внутри 'src' вручную? Могу ли я запустить команду pub для этого? – Freewind

+0

эквивалент командной строки 'pub install', см. Http://pub.dartlang.org/doc/#installing-dependencies и http://pub.dartlang.org/doc/pub-install.html – Fox32

+0

Я не уверен, что это хорошая идея поставить 'server.dart' в' bin', потому что в нем много логики. И это не библиотека, неправильно вставлять ее в 'lib'. Я не знаю, куда его поместить сейчас :( – Freewind

Смежные вопросы