2016-11-26 1 views
26

Я только что установил свое первое приложение с ионным 2 (я использовал ионный 1 довольно широко). Я пытаюсь использовать плагин предварительного просмотра ionic-native camera.Ионный 2: Кордова недоступна. Обязательно включите cordova.js или запустите в устройстве/симуляторе (работает в эмуляторе)

Установка была довольно прямо вперед:

npm install -g ionic cordova 
ionic start timesnap --v2 
ionic platform add android 
ionic platform add ios 
ionic plugin add cordova-plugin-camera-preview --save 

Затем я скопировать и вставить код примера в о странице:

import { CameraPreview, CameraPreviewRect } from 'ionic-native'; 

// camera options (Size and location) 
let cameraRect: CameraPreviewRect = { 
    x: 100, 
    y: 100, 
    width: 200, 
    height: 200 
}; 


// start camera 
CameraPreview.startCamera(
    cameraRect, // position and size of preview 
    'front', // default camera 
    true, // tap to take picture 
    false, // disable drag 
    true, // send the preview to the back of the screen so we can addoverlaying elements 
    1 //alpha 
); 

Я запустил приложение, используя следующие команды:

ionic emulate android -lcs 

ionic emulate ios -lcs --target='iPhone-6' 

Сначала камера не показывалась, а затем я побежал chrome://inspect и увидел предупреждения о том, что Кордова отсутствует «попробуйте запустить эмулятор», но это было во время работы в эмуляторе Android. Я тоже пробовал iOS и видел те же результаты.

Любые идеи, почему кордова не загружается?

Вот полный журнал ошибок из chrome://inspect во время работы в эмуляторе Android:

enter image description here

Update ... index.html

(это просто стандарт один порожденный ионную)

<!DOCTYPE html> 
<html lang="en" dir="ltr"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Ionic App</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> 
    <meta name="format-detection" content="telephone=no"> 
    <meta name="msapplication-tap-highlight" content="no"> 

    <link rel="icon" type="image/x-icon" href="assets/icon/favicon.ico"> 
    <link rel="manifest" href="manifest.json"> 
    <meta name="theme-color" content="#4e8ef7"> 

    <!-- cordova.js required for cordova apps --> 
    <script src="cordova.js"></script> 

    <!-- un-comment this code to enable service worker 
    <script> 
    if ('serviceWorker' in navigator) { 
     navigator.serviceWorker.register('service-worker.js') 
     .then(() => console.log('service worker installed')) 
     .catch(err => console.log('Error', err)); 
    } 
    </script>--> 

    <link href="build/main.css" rel="stylesheet"> 

</head> 
<body> 

    <!-- Ionic's root component and where the app will load --> 
    <ion-app class="trans"></ion-app> 

    <!-- The polyfills js is generated during the build process --> 
    <script src="build/polyfills.js"></script> 

    <!-- The bundle js is generated during the build process --> 
    <script src="build/main.js"></script> 

</body> 
</html> 
+0

Можете ли вы поделиться своим файлом index.html, особенно, когда вы включаете все необходимые сценарии? –

+2

@KerriShotts Я добавил его. Я понял, что если я не использую флаг живой перезагрузки ('-l'), он, похоже, работает нормально. Не уверен, что это ожидалось или нет, но я подал вопрос на их github. Если это ожидается, вероятно, это должно быть где-то в документах. – Lenny

+0

вы можете проверить, работает ли это или нет. Я хочу создать приложение для изменения, поскольку я работаю с собственными функциями. Выполнение команды 'run' каждый раз очень расстраивает. Сейчас работает ли работа с печью? – krv

ответ

4

Возможно, вы пропустили какой-то шаг. Вы построили платформу перед эмулированием?

ionic build android 
ionic build ios 
+1

Я как-то понял, но он все еще не совсем прав , Если я не использую флаг живой перезагрузки ('-l'), он отлично работает. Довольно раздражает необходимость повторного развертывания при каждом изменении, но сейчас это работает. – Lenny

74

Это довольно поздно, но кто-то собирается через ту же проблему может извлечь выгоду из этого answer.First попытаться добавить браузер, выполнив следующую команду ionic platform add browser, а затем выполнить команду ionic run browser.

какая разница между ionic serve and ionic run browser?

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

Вы можете обратиться this link знать больше разницы между ionic serve и ionic run browser командой

Обновление

От Ionic 3 эта команда была изменена.Вместо этого используйте команду ниже;

ionic cordova platform add browser

ionic cordova run browser

Вы можете узнать, какую версию ионных вы используете выполнив команду: ionic --version

+6

для будущих ссылок были изменены команды, ионная кордова, ионная кордова add. –

+1

Изменение HTML-кода не наблюдается. Любая идея о том, как это сделать? – Santosh

+0

awesome solution – FosAvance

22

LiveReload плагин не служит cordova.js файл и служит // макета файл Cordova во время разработки.

FIX: Вам нужно перейти к node_modules/@ionic/app-scripts/dist/dev-server/serve-config.js

и заменить

exports.ANDROID_PLATFORM_PATH = path.join('platforms', 'android', 'assets', 'www'); 

в

exports.ANDROID_PLATFORM_PATH = path.join('platforms', 'android', 'app', 'src', 'main', 'assets', 'www'); 
+0

Это сработало для меня! Кто-нибудь знает, есть ли для этого отчет об ошибке? – Vinicius

+1

Сообщается об ошибке: https://github.com/ionic-team/ionic/issues/13737 – Sergito

+0

Да! Это тоже работает для меня. Спасибо – Ruddy

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

  • Нет связанных вопросов^_^