edit-config для описів використання ios: doc.find не є функцією


81

При використанні edit-configтегу в config.xml, я отримую цю помилку при побудові:

Error: doc.find is not a function

Будь-які ідеї?



Швидше за все! Дякую
Бенджамін Е.

1
Альтернативою для додавання цих описів використання є: github.com/dpa99c/cordova-custom-config
DaveAlden

Дякую, відповів експерт;)
Бенджамін Е.

Відповіді:


175

Я думаю, що помилка виникла, коли platforms/ios/ios.jsonфайл суперечить файлу config.xml.

Щоб вирішити цю проблему, видаліть *-Info.plistключ та його значення в platforms/ios/ios.jsonта cordova prepare iosповторіть.

--- додавання 17 / травня / 2020 ---

Якщо деякі плагіни мають config-fileтег для, *-Info.plistа config.xml - edit-configдля *-Info.plist, ця помилка може статися. У цьому випадку видаліть platforms/*і plugins/*, а потім cordova platform add iosі cordova prepareзнову. (Якщо ви обійдетеся cordova prepareбез cordova platform add ios, ця помилка може статися)


7
Гарне рішення, враховуючи, наскільки малоінформативною є ця помилкова помилка!
jdixon04

7
Якщо це рішення не працює для вас, перейдіть до своїх платформ> ios> файл ios.json і в батьківському ключі * -Info.plist додайте нове значення, додане до файлу config.xml. Наприклад, якщо ви додаєте тег редагування-конфігурації NSPhotoLibraryUsageDescription, додайте:"NSPhotoLibraryUsageDescription": [ { "xml": "<string>Need photo library access to get pictures from there.</string>", "count": 1, "mode": "merge", "id": "config.xml" } ],
Хуан Бернал

7
Це допомогло, але прочитало це ( stackoverflow.com/a/48558496/1176567 ). Якщо ви просто видалите платформу cordova ios і додасте її знову, це буде працювати. Ця проблема виникає, коли платформа ios вже додана, а потім ми оновлюємо config.xml за допомогою <edit-config>.
jsr

55

Існує проблема із <edit-config>конфліктом, platforms/ios/ios.jsonколи *-Info.plistвже заповнено у jsonфайлі станом на Cordova 7.1.0

Я вирішив проблему, використовуючи <config-file>замість цього.

Рішення:

<config-file target="*-Info.plist" parent="NSLocationWhenInUseUsageDescription">
    <string>need location access to find things nearby</string>
</config-file>

1
Зараз Apple запитує NSLocationAlwaysUsageDescription, це вирішує мою проблему, дуже багато!
Девід Дал Буско,

1
Це ідеальна відповідь.
Ніл

34

Я зробив це з Ionic 3. Зараз чудово працює :)

Рішення:

ionic cordova platform remove ios
ionic cordova platform add ios

Повторне додавання платформи iOS дозволить щойно створити ios.jsonфайл.


Дивовижний! Не вдалося знайти жодної документації щодо цього.
ken

2
Це свого роду ядерний варіант ... не спробуйте спочатку.
mmmpop
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.