[ 
https://issues.apache.org/jira/browse/CB-13853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Valentin Haloiu updated CB-13853:
---------------------------------
    Summary: cordova prepare fails to install plugins  (was: Plugin 
installation is not deterministic)

> cordova prepare fails to install plugins
> ----------------------------------------
>
>                 Key: CB-13853
>                 URL: https://issues.apache.org/jira/browse/CB-13853
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-lib
>    Affects Versions: cordova@8.0.0
>         Environment: * Node {{9.5.0}}
>  * NPM {{5.6.0}}
>  * Cordova {{8.0.0}}
>            Reporter: Valentin Haloiu
>            Priority: Major
>
> h2. Demo cordova project
> [cordova-plugin-install-bug-demo|https://github.com/vially/cordova-plugin-install-bug-demo]
> h2. Steps to reproduce
> After cloning the repo {{cd}} into the root directory of the project and run:
>  * {{npm install}}
>  * {{cordova prepare ios --verbose}}
> The plugins will fail to install correctly and the contents of the generated 
> {{plugins/fetch.json}} file is messed up:
> {noformat}
> {
>   "cordova-plugin-whitelist": {
>     "source": {
>       "type": "registry",
>       "id": "cordova-plugin-whitelist@1.3.1"
>     },
>     "is_top_level": true,
>     "variables": {}
>   },
>   "cordova-plugin-splashscreen": {
>     "source": {
>       "type": "registry",
>       "id": "cordova-plugin-customurlscheme@^4.3.0"
>     },
>     "is_top_level": true,
>     "variables": {
>       "URL_SCHEME": "io.cordova.hellocordova"
>     }
>   }
> }
> {noformat}
>  Also, the output of the {{cordova prepare ios --verbose}} makes it quite 
> clear that something went wrong during the installation:
> {noformat}
> ...
> Discovered plugin "cordova-plugin-customurlscheme" in config.xml. Adding it 
> to the project
> No scripts found for hook "before_plugin_add".
> Calling plugman.fetch on plugin "cordova-plugin-customurlscheme@^4.3.0"
> Running command: npm install cordova-plugin-customurlscheme@^4.3.0 
> --production --no-save
> Command finished with error code 0: npm 
> install,cordova-plugin-customurlscheme@^4.3.0,-production,-no-save
> Copying plugin 
> "/path-to-project/cordova-install-plugin-bug/node_modules/cordova-plugin-splashscreen"
>  => 
> "/path-to-project/cordova-install-plugin-bug/plugins/cordova-plugin-splashscreen"
> Calling plugman.install on plugin 
> "/path-to-project/cordova-install-plugin-bug/plugins/cordova-plugin-splashscreen"
>  for platform "ios
> Plugin "cordova-plugin-splashscreen" already installed on ios.
> ...
> {noformat}
> The installation process seems to mess up the installation of the 
> {{customurlscheme}} plugin with that of the {{splashscreen}} plugin.
> h2. Underlying code issue
> The root of the problem seems to be in the 
> [add.js|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js]
>  {{cordova-lib}} file.
> [Line 
> 97|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L97]
>  prints the {{Calling plugman.fetch on plugin "customurlscheme"}} line, while 
> [line 
> 131|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L131]
>  prints {{Calling plugman.install on plugin "splashscreen"}}.
> This seems to suggest that somewhere between these two lines cordova messes 
> up the plugins somehow.
> The code is somewhat difficult to understand but the root cause seems to be 
> this 
> [pluginInfo|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L52]
>  global variable. Its value is [assigned in the callback of a 
> promise|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L103],
>  read from [another callback of a 
> promise|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L131],
>  while [a whole chain of 
> promises|https://github.com/apache/cordova-lib/blob/81f0a8214aa6dc2811bcb6472f4ce62cb8719024/src/cordova/plugin/add.js#L74]
>  is set using a {{reduce}} function.
> h2. Further information
> Replacing {{"cordova-plugin-splashscreen": "^5.0.1"}} with 
> {{"cordova-plugin-splashscreen": "5.0.1"}} in {{package.json}} makes the 
> {{prepare}} command complete succesfully ([demo 
> branch|https://github.com/vially/cordova-plugin-install-bug-demo/tree/no-fail]).
>  This is a small example of the volatility of the bug.



--
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