edit-config для описания использования ios: doc.find не является функцией

82

При использовании edit-configтега in config.xmlя получаю эту ошибку при сборке:

Error: doc.find is not a function

Есть идеи?

Бенджамин Э.
источник
Наверняка! Спасибо
Benjamin E.
1
Альтернатива для добавления этих описаний использования: github.com/dpa99c/cordova-custom-config
DaveAlden
Спасибо, ответил эксперт;)
Benjamin E.

Ответы:

177

Я думаю, что ошибка возникла, когда 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этого, может произойти эта ошибка)

KNaito
источник
7
Хорошее решение, учитывая, насколько неинформативна эта дерьмовая ошибка!
jdixon04
7
Если это решение не работает для вас, перейдите в файл platform> 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" } ],
Juan Bernal
7
Это помогло, но прочтите об этом ( stackoverflow.com/a/48558496/1176567 ). Если вы просто удалите платформу cordova ios и снова добавите ее, все заработает. Эта проблема возникает, когда платформа ios уже добавлена, а затем мы обновляем config.xml с помощью <edit-config>.
JSR
55

Существует проблема, связанная с <edit-config>конфликтом с тем, platforms/ios/ios.jsonкогда *-Info.plistуже заполнено вjson файл , как Кордовы 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