You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Thomas Brian (JIRA)" <ji...@apache.org> on 2018/02/16 19:39:00 UTC

[jira] [Commented] (CB-13589) Cordova fetch updates too aggressively and breaks itself

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

Thomas Brian commented on CB-13589:
-----------------------------------

From what I tried to debug, the problem originates in cordova-fetch/index.js. The function trimID that tries to get the module ID from the cordova-fetch "target" argument doesn't take into account that the target string may be of the form "file:<path>". It tries to open the file under "<target>/package.json" but fails because it doesn't strip the file: prefix

> Cordova fetch updates too aggressively and breaks itself
> --------------------------------------------------------
>
>                 Key: CB-13589
>                 URL: https://issues.apache.org/jira/browse/CB-13589
>             Project: Apache Cordova
>          Issue Type: Bug
>            Reporter: Andrew Crites
>            Priority: Blocker
>
> Related: CB-11252 CB-12262 -- these issues say they are fixed, but I can still reproduce them.
> Running {{cordova platform add}} with plugins directly from github or a file system path will update {{package.json}} in a way that subsequently breaks the plugin installation. To get around this, you must currently use {{cordova platform add $PLATFORM --nofetch}}.
> For example:
> {code}
>     <plugin name="cordova-plugin-apprate" spec="https://github.com/pushandplay/cordova-plugin-apprate#0cc8b3b424491d35b1e571a69b21d2ae7cb9cff9" />
>     <plugin name="phonegap-plugin-push" spec="./src/local-plugins/phonegap-plugin-push">
>         <variable name="SENDER_ID" value="$SENDER_ID" />
>     </plugin>
> {code}
> On an initial {{cordova platform add}} this will work fine. However, this updates {{package.json}} to add these plugins as dependencies:
> {code}
> +    "cordova-plugin-apprate": "git+https://github.com/pushandplay/cordova-plugin-apprate.git#0cc8b3b424491d35b1e571a69b21d2ae7cb9cff9",
> +    "phonegap-plugin-push": "file:src/local-plugins/phonegap-plugin-push",
> {code}
> Now try:
> {code}
> rm -rf node_modules platforms plugins
> npx npm@5.4.2 install
> npx cordova@7.1.0 platform add ios
> {code}
> for example. Plugin installation will be unsuccessful:
> {code}
> Failed to restore plugin "phonegap-plugin-push" from config.xml. You might need to try adding it again. Error: Failed to fetch plugin file:src/local-plugins/phonegap-plugin-push via registry.
> Failed to restore plugin "cordova-plugin-apprate" from config.xml. You might need to try adding it again. Error: Failed to fetch plugin git+https://github.com/pushandplay/cordova-plugin-apprate.git#0cc8b3b424491d35b1e571a69b21d2ae7cb9cff9 via registry.
> {code}
> Manually removing the {{package.json}} update ({{\--nosave}} is broken CB-13463) or using {{\--nofetch}} will work.



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

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