Edit-config for ios 使用说明: doc.find 不是一个函数

config.xml中使用 edit-config标记时,我在构建时得到这个错误:

Error: doc.find is not a function

有什么想法吗?

30962 次浏览

I think that the error has thrown when the platforms/ios/ios.json file is conflicting to the config.xml.

To resolve this issue, remove *-Info.plist key and its value in platforms/ios/ios.json and do cordova prepare ios again.

--- adding 17/May/2020 ---

If some plugins has config-file tag for *-Info.plist and config.xml has edit-config tag for *-Info.plist, this error may happen. In this case, remove platforms/* and plugins/*, and then cordova platform add ios and cordova prepare again. (If you do cordova prepare without cordova platform add ios, this error may happen)

I have done this with Ionic 3. Working fine now :)

Solution:

ionic cordova platform remove ios
ionic cordova platform add ios

Re-adding the iOS platform will freshly create the ios.json file.

There is an existing issue with <edit-config> conflicting with platforms/ios/ios.json when *-Info.plist is already populated in the json file as of Cordova 7.1.0

I have fixed the issue by using <config-file> instead.

Solution:

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

Yes, brute force on this case works just fine

cordova platform rm ios && cordova platform add ios

You shouldn't care what's inside platform/ios because the directory platforms is volatile in cordova, nor should be tracked on git projects.