Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Имя файла не соответствует имени класса - итог приложение не запускается, ошибок нет (https://javascript.ru/forum/extjs/55964-imya-fajjla-ne-sootvetstvuet-imeni-klassa-itog-prilozhenie-ne-zapuskaetsya-oshibok-net.html)

khusamov 23.05.2015 03:35

Имя файла не соответствует имени класса - итог приложение не запускается, ошибок нет
 
Если вдруг встретился в extend или в requires класс, в файле которого, в define имя класса другое (с банальной ошибкой какой-нибудь, например букву пропустили), то приложение вообще не запускается и никаких ошибок не генерируется.

Например загружаю

require("Zevs.controller.command.InsertCommand")


а в файле

define("Zevs.controller.command.Insert", ...


Проблема в том, что если изначально не знаешь где ошибка, то приходится: а) вспоминать, что это скорее всего именно этот случай (не знаю как другие, а я что-то долго это вспоминаю), б) когда вспомнил - приходится долго искать в файлах, где же несоответствие имени файла и имени класса в файле.

Как сделать, чтобы выскакивало хоть какое-то сообщение об ошибке?

nohuhu 23.05.2015 03:47

Использовать Sencha Cmd, оно взорвётся на этапе построения дерева зависимостей. ;)

siber-biber 23.05.2015 07:08

В консоль браузера смотрите. Там пишутся ошибки. Ну и на закладке "сеть" можно банально 404 увидеть..

khusamov 23.05.2015 19:17

Цитата:

Сообщение от siber-biber (Сообщение 372026)
В консоль браузера смотрите. Там пишутся ошибки. Ну и на закладке "сеть" можно банально 404 увидеть..

Ошибок нет.

404 не появляется по причине, что файл-то найден! А вот класса в нем (ну искомого конечно) нету.

Так что увы, похоже нужен Cmd.

siber-biber 24.05.2015 06:47

В принципе я никогда не испытывал такой потребности.. но такую проверку можно самостоятельно прикрутить к редактору в котором вы работаете, либо добавить в другой этап воркфлоу вашей разработки.
Вещь то элементарная пройти по файлам и проверить чтоб имена совпадали с Ext.define('...', ...

У нас например практикуются хуки перед коммитом в которых мы гоняем лёгкие санити тесты. Вот я бы туда такое и вписал наверно..

khusamov 24.05.2015 17:15

Цитата:

самостоятельно прикрутить к редактору
Хмм... я об этом вообще не подумал. Надо глянуть Cloud9 поддерживает подобные фичи или нет. Спасибо за подсказку.

nohuhu 26.05.2015 19:54

Цитата:

Сообщение от khusamov (Сообщение 372132)
Хмм... я об этом вообще не подумал. Надо глянуть Cloud9 поддерживает подобные фичи или нет. Спасибо за подсказку.

Если будете пытаться что-то такое делать, то настраивайте фичу сразу, чтобы поиск шёл только по коду вашего приложения. С основным фреймворком и user extensions проверка "имя файла === имя класса в Ext.define" сломается много где.

khusamov 26.05.2015 21:25

ну да... туда лучше не лезть...

посмотрел, в Cloud9 есть такая возможноссть - называется плагины и бандлы. Но там все по взрослому сделано. СДК есть даже. В общем придется это отложить, потом вернусь и освою построение плагинов. Думаю что не только этот плагин понадобиться. Спасибо за наводку - знаю где можно подобные проблемы решать))))

nohuhu 27.05.2015 01:54

Я уже говорил: для решения подобных проблем есть специальный инструмент, Sencha Cmd. Вам принципиально велосипед изобретать?

Я помню о вашей проблеме с Cmd и Cloud9, открыл тикет и обсудил эту тему с нашими инструментальщиками. Проблему признают, обещали когда-нибудь пофиксить. Вряд ли это будет быстро, т.к. сериализация и выгрузка данных из памяти сейчас кодом не предусмотрена, и нужно некий рефакторинг устроить.

Поэтому рекомендую поискать временные пути обхода проблемы.

khusamov 27.05.2015 14:42

Цитата:

Вам принципиально велосипед изобретать?
Нет. Но у меня есть еще задачи другие, которые легко решаются плагинами для Cloud9, например деплой.

nohuhu 27.05.2015 21:16

Это аргумент, согласен. Интеграцию с внешними хостами они поддерживают? Чтобы можно было их клиента локально запустить. Если нет, то есть вариант пообщаться с их техподдержкой на предмет проверить, будет ли Cmd запускаться при большем количестве RAM.

khusamov 28.05.2015 15:41

Цитата:

Интеграцию с внешними хостами они поддерживают? Чтобы можно было их клиента локально запустить
Интеграцию можно делать самостоятельно - там полноценный VDS и делай что хош. А вот локально их клиента запустить - такой возможности я не обнаружил и ощущение что вряд-ли они бесплатно это дадут.

Я хочу там сделать FTP-сервер, а потом всю папку подмониторить на своем компе и уже на своем буду запускать Cmd, и будет счастье. Чуть позже этим займусь.

nohuhu 28.05.2015 21:59

FTP не надо, используйте лучше SCP или SFTP. SSH там должно быть, так что уже всё есть, что нужно.

Есть даже готовые утилиты, которые файловые структуры синхронизируют: http://winscp.net/eng/docs/task_synchronize_full

khusamov 29.05.2015 00:21

Файловая синхронизация не нужна, так как можно просто подмонтировать как папку. Cmd даже не заметит что работает с удаленными каталогами и файлами.

SSH на Cloud9 нету. SFTP не знаю, дает ли преимущества, а вот гемора доставит. Проще FTP конечно же.

nohuhu 29.05.2015 01:25

Можно и подмонтировать, но поверьте моему опыту, работать с удалённой файловой системой по FTP как с локальной будет очень больно.

А FTP не надо просто потому, что оно ваш логин-пароль передаёт открытым текстом. Похороните FTP уже и забудьте навсегда. Используйте SCP или SFTP.

khusamov 29.05.2015 15:58

не могу похоронить, некоторые сервисы не поддерживают ничего кроме FTP... да и зачем он нужен на разработке? Там секретов нету. все оперсоурс же


Часовой пояс GMT +3, время: 02:45.