[ 
https://issues.apache.org/jira/browse/CB-13564?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16388264#comment-16388264
 ] 

Jacob Weber commented on CB-13564:
----------------------------------

I think this needs the attention of a Cordova developer....the code is pretty 
complex, and I don't want to submit a patch without fully understanding it.

The error consistently happens when you try to modify Info.plist in both a 
plugin and config.xml.

Here's how to reproduce it. First create a plugin that does an edit-config on 
Info.plist:
{code:java}
# /sample-plugin/plugin.xml

<plugin xmlns="http://cordova.apache.org/ns/plugins/1.0";
    id="sample-plugin"
    version="1.0.0">

    <name>Sample</name>

    <platform name="ios">
        <edit-config file="*-Info.plist" mode="merge" 
target="NSPhotoLibraryUsageDescription">
            <string>foo</string>
        </edit-config>
    </platform>
</plugin>{code}
{code:java}
# /sample-plugin/package.json

{
  "name": "sample-plugin",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}{code}
Then try the following:
{code:java}
$ node --version
v8.9.4
$ cordova --version
8.0.0
$ cordova create CordovaTest com.sample.cordovatest CordovaTest
$ cd CordovaTest
$ cordova platform add ios@4.5.4
$ cordova plugin add /sample-plugin/
$ rm -rf platforms/ node_modules/ plugins/ package-lock.json{code}
Then edit {{config.xml}} and add another edit-config for Info.plist:
{code:java}
    <edit-config file="*-Info.plist" mode="merge" 
target="NSCameraUsageDescription">
        <string>bar</string>
    </edit-config>
{code}
Then run:
{code:java}
$ cordova prepare --verbose{code}
The output will end in:
{code:java}
(node:43598) UnhandledPromiseRejectionWarning: Unhandled promise rejection 
(rejection id: 1): TypeError: doc.find is not a function
(node:43598) [DEP0018] DeprecationWarning: Unhandled promise rejections are 
deprecated. In the future, promise rejections that are not handled will 
terminate the Node.js process with a non-zero exit code.{code}

> Multiple edit-config items for Info.plist causing error
> -------------------------------------------------------
>
>                 Key: CB-13564
>                 URL: https://issues.apache.org/jira/browse/CB-13564
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-cli
>            Reporter: Tom Bell
>            Priority: Major
>
> I am on 7.1.0 of `cordova-cli`, there was no `7.1.0` in the "Affects 
> Versions" dropdown.
> I've updated `cordova-ios` to 4.5.3 and `cordova-plugin-contacts` to 3..0.0, 
> I've got the following 
> working:
> {code:xml}
> <edit-config file="*-Info.plist" mode="merge" 
> target="NSContactsUsageDescription">
>     <string>We require permission to access your contacts so you can import 
> contacts into [redacted]</string>
> </edit-config>
> {code}
> However when I decided to move some stuff from an `after_prepare` hook 
> script, to use edit-config, it fails with an error `doc.find is not a 
> function`
> {code:xml}
> <edit-config file="*-Info.plist" mode="merge" 
> target="NSContactsUsageDescription">
>     <string>We require permission to access your contacts so you can import 
> contacts into [redacted]</string>
> </edit-config>
> <edit-config file="*-Info.plist" mode="merge" target="UIStatusBarStyle">
>     <string>UIStatusBarStyleLightContent</string>
> </edit-config>
> {code}
> If I take out the additional `<edit-config>` everything works.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to