приложение phonegap с генератором angular-fullstack

Задача состоит в том, чтобы запустить приложение, созданное с помощью angular-fullstack-generator с помощью < href="http://yeoman.io/" rel="nofollow noreferrer">йоман с диапазон.

Для всех, кто заинтересован, вот самые многообещающие уроки, которые я нашел для этого:

Итак, первое руководство привело меня к рабочему решению с angular-generator от команды yeoman. Но теперь с angular-fullstack-generator я столкнулся со следующей проблемой. Консоль говорит мне:

Failed to load resource file:///app/45eec174.app.css
Failed to load resource file:///app/f9250ffb.vendor.js
Failed to load resource file:///app/90992454.app.js
Failed to load resource file://www.google-analytics.com/analytics.js

Итак, пока я подозреваю, что тег <base href="/"> сгенерирован в заголовке файла index.html. Аналогично этому SO-question. Просто удалить - не вариант.

Теперь мое понимание grunt ограничено, но почему это работает с grunt serve именно так?

И как мне исправить это, чтобы заставить его работать с телефонным разрывом?


person Stefan    schedule 29.06.2015    source источник
comment
Вы не даете много информации, чтобы продолжить, но если бы мне пришлось сделать обоснованное предположение, я бы сказал, что ваш index.html находится в неправильном месте. Где он находится относительно папки вашего приложения?   -  person Sander_P    schedule 30.06.2015
comment
это в той же папке, что и приложение   -  person Stefan    schedule 30.06.2015


Ответы (2)


Я в той же миссии. Но пока заставить его работать. Однако в качестве первого шага мне удалось запустить пользовательский интерфейс как отдельное приложение.

Ваша догадка верна,

Этот базовый тег используется angular во всем приложении при загрузке шаблонов. В то же время включение базового тега не найдет ресурсы, включенные в index.html. я сделал следующее

  1. Удален базовый тег из index.html.
  2. В угловой конфигурации сделал следующее

    $locationProvider.html5Mode({ enabled: true, requireBase: false });

шаг № 2, помогает angular работать в режиме html5, не требуя базового тега.

  1. Измените все вызовы внутренних служб в форме http://backendurl.com:port/api/service.

  2. не обслуживать socket-io-client с сервера

  3. установить socket-io-client как компонент беседки на стороне клиента

  4. подключить socket-io-client с внутренним URL-адресом

  5. собрать полный стек для dist (ворчание build:dist)

  6. создайте символическую ссылку для \dist\public на cordovaapppath\www

  7. построить приложение Cordova (кордова построить Android)

вы сделали. Мне удалось создать свое приложение с помощью phonegap. Я создал проект github, расширяющий полный стек Angular. https://github.com/kannach/AFSPhonegap

пожалуйста, попробуйте и внести свой вклад.

person chank    schedule 08.09.2015
comment
спасибо большое, то что нужно!! как вы исправили URL-адреса для API-вызовов? на какую ссылку? та же проблема со всеми активами, так как для ссылки на img простые assets/images/image.png больше не работают... (префикс ./ не работает) - person nicost; 02.10.2015
comment
Я создал постоянную службу, в которой я мог настроить внутренний URL-адрес. Во все файлы, в которых есть $http.get, внедрить эту постоянную службу и добавить префикс api. что-то вроде константы.backenturl + /api/action. - person chank; 02.10.2015
comment
это именно то, что я тоже пытаюсь сделать :) Я просто не понимаю, на что ссылается корневая кордова, когда задаю пути (например, форма img src)... знаете ли вы, в какой каталог кордова ведет себя как корень после его файла:/// ? другими словами, как я могу указать, где он должен искать? (при загрузке файлов .js его корень - android_asset/www/...., хотя такой папки нет). Различение того, работает ли он на кордове или нет, и использование соответствующего baseUrl решит проблему. Вы делаете это таким образом? если да, то как? спасибо за помощь! - person nicost; 02.10.2015
comment
Мне удалось заставить его работать, но я не удовлетворен, так как это довольно уродливо: API-вызовы: почему-то API-вызовы на localhost: 9000/api не работают в кордове, вместо этого работает ввод локального ip... Активы: В качестве baseUrl я вставил android_asset....‹путь к активам› вы знаете, как это сделать правильно без этого хака? Большое спасибо! - person nicost; 02.10.2015
comment
В последнее время не было времени проверить. Я только что настроил проект на github, я буду интегрировать туда свои изменения. возможно, я смогу заставить его работать к концу этой недели. - person chank; 12.10.2015
comment
Мне удалось запустить приложение phonegap. Я создал проект github со своими изменениями. пожалуйста, посмотрите github.com/kannach/AFSPhonegap. Я скоро отредактирую свой ответ. - person chank; 14.10.2015
comment
Спасибо Чандру за четкое решение. Мне уже удалось запустить его, хотя я не создаю символическую ссылку, а просто копирую содержимое dist/public/ в cordova/www. это тоже помогает. - person nicost; 23.10.2015
comment
Привет, я тоже в той же миссии, но в моем случае это дает мне Cannot read property '1' of null эту ошибку. это здесь <div ui-view=""></div>, если я удалю этот div, появится ошибка, но представление не загружается. какие-либо предложения? - person Divyesh Savaliya; 13.12.2016
comment
У вас все еще есть базовый тег в index.html? - person chank; 14.12.2016

На данный момент, после выполнения всего руководства @Chandru, вы должны сделать еще одну вещь, если вы используете версию Generator Angular Fullstack после версии Поддержка 4.0.0 Beta 2 Webpack:

В webpack.make.js измените строку:

publicPath: BUILD || DEV || E2E ? '/' : `http://localhost:${8080}/`,

to

publicPath: BUILD || DEV || E2E ? '' : `http://localhost:${8080}/`, 
person Lam Duc Trung    schedule 08.01.2017