Запустите Dart WebApp на сервере Apache

Я хочу разместить приложение Dart на сервере Apache. я добавил строку

application/dart dart

в файл mime.type в конфигурации Apache. Тем не менее я получаю ошибку

Resource interpreted as Script but transferred with MIME type text/plain:    "http://localhost/~d022051/mastermind/web/mm-game.dart".

Другой проблемой является ссылка на каталог пакетов. Я не хочу иметь символические ссылки в каталоге документов сервера. Есть ли умный способ скопировать необходимые пакеты в правильной версии?


person Gregor    schedule 10.07.2014    source источник


Ответы (2)


Это сообщение не имеет ничего общего с Apache.

Я некоторое время работал с Apache, но, насколько я знаю, вам не нужны определенные настройки для обслуживания клиентского приложения Dart с использованием Apache. Они ничем не отличаются от любых других статических файлов HTML, CSS, JavaScript или изображений.

Вы получаете это сообщение, потому что страница входа (index.html) содержит тег сценария для сценария Dart. После запуска pub build в выходных данных сборки нет скриптов Dart (пока) (это изменится, когда Chrome будет поддерживать Dart, а pub build также будет генерировать выходные данные Dart).

Когда браузер находит этот (в настоящее время избыточный) тег сценария Dart, он выдает этот вывод. Если вы хотите избавиться от этого сообщения, просто удалите тег script со страницы HTML в файле your_app_package/build/web/index.html.

ИЗМЕНИТЬ

transformers:
- $dart2js:
    'minify': true
    commandLineOptions: ['--output-type=dart']

or

    commandLineOptions: ['--output-type=dart', '--categories=Server']

Я не проверял, влияет ли этот аргумент категории на dart2dart.

ИЗМЕНИТЬ КОНЕЦ

ИЗМЕНИТЬ2

Существует также тип вывода dart-multi, который создает один файл вывода для каждой входной библиотеки. См. https://code.google.com/p/dart/issues/detail?id=21616#c9 для более подробной информации.

ИЗМЕНИТЬ2 КОНЕЦ

person Günter Zöchbauer    schedule 10.07.2014
comment
Привет, файл dart.js — это только часть проблемы. Настоящая проблема заключается в том, чтобы получить правильные пакеты, с правильными версиями и правильными именами, с правильной внутренней структурой и правильными разрешениями для каталога docs на сервере. Есть ли что-нибудь, что упаковывает исходники дротика для доставки на сервер? - person Gregor; 10.07.2014
comment
Я не знаю, что вы имеете в виду под разрешениями, но обычно вам нужно только скопировать каталог build/web (или только его содержимое) в каталог docs после запуска pub build. - person Günter Zöchbauer; 10.07.2014
comment
Я говорю о запуске скриптов дротика в Dartium. Пакеты в каталоге сборки содержат только файлы js, без dart. Пакеты в корне проекта — это ссылки на .pub-cache. Там пакеты не установили x-бит ни для одного пользователя. И эти пакеты имеют файлы dart в каталоге lib, который не является частью используемых URL-адресов. - person Gregor; 10.07.2014
comment
Вы должны были упомянуть об этом. Dartium не предназначен для производства, поэтому это может быть только установка для разработки. зачем вам это? Я предполагаю, что вам нужно пересылать/делегировать запросы, связанные с Dart, на pub serve вместо статического каталога. - person Günter Zöchbauer; 10.07.2014
comment
Извините, я думал, что приложение Dart прояснит это. Я хочу запустить приложение внутри компании и поделиться им с нашей командой разработчиков. - person Gregor; 10.07.2014
comment
Я обновил свой ответ. Вы можете попробовать добавить --output-type=dart для создания вывода Dart (я сам еще никогда не использовал это - я просто попробовал это с каким-то случайным проектом, прежде чем расширить свой ответ). Но я до сих пор не могу понять, зачем вам нужен Dart, чтобы делиться им со своей командой разработчиков. Почему бы не поделиться выводом сборки JS? - person Günter Zöchbauer; 10.07.2014
comment
@Грегор --output-type=dart может быть объявлен устаревшим. Если это не работает, вы можете создать фиктивный преобразователь, который просто пропускает через себя файлы с расширением .dart. - person JAre; 10.07.2014
comment
К сожалению, сборка паба --output-type=dart неизвестна. - person Gregor; 10.07.2014
comment
Я попробовал и pub build сгенерировал *.html вывод со встроенным кодом Dart. Я не пробовал, действительно ли сгенерированный код работал, но мне пришлось немного повозиться, чтобы выяснить формат для pubspec.yaml, чтобы заставить его работать. Я использовал Dart VM version: 1.6.0-edge.38118 (Thu Jul 10 05:58:06 2014) on "linux_x64". Вы можете попробовать dart2js -hv, чтобы получить список поддерживаемых опций. - person Günter Zöchbauer; 10.07.2014
comment
Попробую вариант трансформации. Спасибо за подсказку. - person Gregor; 10.07.2014
comment
@Gregor, вы можете удалить исходное форматирование, комментарии и, возможно, аннотации некоторых типов в трансформаторе с пакетами analyzer pub. Он может анализировать строку и строить из нее AST дротика. Вы можете найти все ненужные узлы AST (комментарии — это узлы) и удалить их. Затем вы можете собрать из него новый исходный код (analyzer предоставляет эту функциональность). Он находится на экспериментальной стадии, но работает довольно хорошо. - person JAre; 10.07.2014
comment
Опция типа вывода для преобразователя действительно создавала веб-приложение с использованием файлов dart. Его можно скопировать в папку, обслуживаемую Apache httpd, и его можно запустить в Dartium. Еще одно замечание: вы должны добавить параметр --mode=debug в командную строку. В противном случае в каталоге сборки не будет исходников дротика. - person Gregor; 11.07.2014
comment
Не думал об этом. Без --mode=debug код встраивается в файлы HTML, а с debug исходные файлы создаются отдельно. Значит, ваша проблема решена? Рад слышать. - person Günter Zöchbauer; 11.07.2014

Добавьте следующие строки в файл pubspec.yaml вашего пакета (спасибо Günter, который указал на это):

transformers:
- $dart2js:
    'minify': true
    commandLineOptions: ['--output-type=dart']

Затем запустите pub build с параметром --mode=debug.

В результате получается «работоспособное» приложение Dart, содержащее исходники dart и необходимые пакеты. Затем каталог сборки можно скопировать в место, видимое для вашего веб-сервера. При загрузке соответствующего URL-адреса в браузере Dartium приложение запускается.

person Gregor    schedule 11.07.2014