Mathis Hofer created CB-13308:
---------------------------------

             Summary: Error on installation of a plugin's dependency that is 
also a direct dependency
                 Key: CB-13308
                 URL: https://issues.apache.org/jira/browse/CB-13308
             Project: Apache Cordova
          Issue Type: Bug
          Components: cordova-lib
    Affects Versions: [email protected]
         Environment: I'm using the following versions on Ubuntu Linux:
{{✔ ~
$ node --version
v8.3.0
✔ ~
$ npm --version
5.4.2
✔ ~
$ cordova --version
7.0.2-nightly.2017.9.20.596da5df 
([email protected])}}
            Reporter: Mathis Hofer


h1. Summary

I'm using the plugins cordova-plugin-device and cordova-plugin-background-mode 
(which itself depends on cordova-plugin-device) in a project. The following 
error occurred, when the background-mode plugins was defined before the device 
plugin in config.xml:

{quote}Failed to install 'cordova-plugin-background-mode': Error
    at 
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/fetch.js:215:37
    at _rejected 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:864:24)
    at 
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:890:30
    at Promise.when 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:1142:31)
    at Promise.promise.promiseDispatch 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:808:41)
    at 
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:624:44
    at runSingle 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:137:13)
    at flush 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9){quote}

This error does not happen, if cordova-plugin-device is not defined as direct 
dependency, or if it is defined before background-mode in config.xml.

h1. Steps to reproduce

I setup a brand new project:

{quote}✔ ~
$ cordova create hello com.example.hello HelloWorld
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df 
([email protected])
Creating a new cordova project.
✔ ~
$ cd hello/
✔ ~/hello
$ cordova platform add android
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df 
([email protected])
Using cordova-fetch for [email protected]
Warning: using prerelease platform [email protected].
Use 'cordova platform add android@latest' to add the latest published version 
instead.
Adding android project...
Creating Cordova project for the Android platform:
Path: platforms/android
Package: com.example.hello
Name: HelloWorld
Activity: MainActivity
Android target: android-26
Subproject Path: CordovaLib
Android project created with [email protected]
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the 
project
Installing "cordova-plugin-whitelist" for android

This plugin is only applicable for versions of cordova-android greater than 
4.0. If you have a previous platform version, you do *not* need this plugin 
since the whitelist will be built in.

Adding cordova-plugin-whitelist to package.json
Saved plugin info for "cordova-plugin-whitelist" to config.xml
--save flag or autosave detected
Saving android@~6.3.0-nightly.2017.9.20.dddb2837 into config.xml file ...}}
{quote}

I add the device plugin:

{quote}✔ ~/hello
$ cordova plugin add cordova-plugin-device
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df 
([email protected])
Installing "cordova-plugin-device" for android
Adding cordova-plugin-device to package.json
Saved plugin info for "cordova-plugin-device" to config.xml
✔ ~/hello
$ cat package.json
{
"name": "com.example.hello",
"displayName": "HelloWorld",
"version": "1.0.0",
"description": "A sample Apache Cordova application that responds to the 
deviceready event.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Apache Cordova Team",
"license": "Apache-2.0",
"dependencies": {
"cordova-android": "^6.3.0-nightly.2017.9.20.dddb2837",
"cordova-plugin-device": "^1.1.6",
"cordova-plugin-whitelist": "^1.3.2"
},
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-plugin-device": {}
},
"platforms": [
              "android"
              ]
}
}✔ ~/hello
$ cat config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.hello" version="1.0.0" 
xmlns="http://www.w3.org/ns/widgets"; 
xmlns:cdv="http://cordova.apache.org/ns/1.0";>
<name>HelloWorld</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://cordova.io";>
Apache Cordova Team
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
<allow-intent href="http://*/*"; />
<allow-intent href="https://*/*"; />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*"; />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="android" spec="~6.3.0-nightly.2017.9.20.dddb2837" />
<plugin name="cordova-plugin-device" spec="^1.1.6" />
</widget>{quote}

When removing the platforms and plugins directories and doing a _cordova 
prepare_, everything looks fine:

{quote}✔ ~/hello
$ rm -rf platforms/ plugins/
✔ ~/hello
$ cordova prepare --verbose
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df 
([email protected])
No scripts found for hook "before_prepare".
Checking config.xml and package.json for saved platforms that haven't been 
added to the project
Config.xml and package.json platforms are the same. No pkg.json modification.
Package.json and config.xml platforms are different. Updating config.xml with 
most current list of platforms.
Discovered platform "android@^6.3.0-nightly.2017.9.20.dddb2837" in config.xml 
or package.json. Adding it to the project
No scripts found for hook "before_platform_add".
Using cordova-fetch for cordova-android@^6.3.0-nightly.2017.9.20.dddb2837
Running command: npm install cordova-android@^6.3.0-nightly.2017.9.20.dddb2837
Command finished with error code 0: npm 
install,cordova-android@^6.3.0-nightly.2017.9.20.dddb2837
Removing "cordova-" prefix from cordova-android
Warning: using prerelease platform [email protected].
Use 'cordova platform add android@latest' to add the latest published version 
instead.
Adding android project...
PlatformApi successfully found for platform android
Creating Cordova project for the Android platform:
Path: platforms/android
Package: com.example.hello
Name: HelloWorld
Activity: MainActivity
Android target: android-26
Copying android template project to platforms/android
Subproject Path: CordovaLib
Android project created with [email protected]
Saving [email protected] into platforms.json
No scripts found for hook "after_platform_add".
PlatformApi successfully found for platform android
Checking config.xml for saved plugins that haven't been added to the project
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the 
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-whitelist@^1.3.2"
Running command: npm install cordova-plugin-whitelist@^1.3.2
Command finished with error code 0: npm install,cordova-plugin-whitelist@^1.3.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-whitelist" => 
"/home/mhofer/hello/plugins/cordova-plugin-whitelist"
Calling plugman.install on plugin 
"/home/mhofer/hello/plugins/cordova-plugin-whitelist" for platform "android
Installing "cordova-plugin-whitelist" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0: 
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin 
cordova-plugin-whitelist on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-whitelist" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-whitelist on android.

               This plugin is only applicable for versions of cordova-android 
greater than 4.0. If you have a previous platform version, you do *not* need 
this plugin since the whitelist will be built in.

Finding scripts for "after_plugin_install" hook from plugin 
cordova-plugin-whitelist on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Discovered plugin "cordova-plugin-device" in config.xml. Adding it to the 
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-device@^1.1.6"
Running command: npm install cordova-plugin-device@^1.1.6
Command finished with error code 0: npm install,cordova-plugin-device@^1.1.6
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-device" => 
"/home/mhofer/hello/plugins/cordova-plugin-device"
Calling plugman.install on plugin 
"/home/mhofer/hello/plugins/cordova-plugin-device" for platform "android
Installing "cordova-plugin-device" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0: 
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin 
cordova-plugin-device on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-device" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-device on android.
Finding scripts for "after_plugin_install" hook from plugin 
cordova-plugin-device on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Checking for any plugins added to the project that have not been installed in 
android platform
No differences found between plugins added to project and installed in android 
platform. Continuing...
Generating platform-specific config.xml from defaults for android at 
/home/mhofer/hello/platforms/android/res/xml/config.xml
Merging project's config.xml into platform-specific android config.xml
Merging and updating files from [www, platforms/android/platform_www] to 
platforms/android/assets/www
mkdir platforms/android/assets/www/cordova-js-src
mkdir platforms/android/assets/www/cordova-js-src/android
copy  
platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js 
platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js (new 
file)
copy  
platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js 
platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js 
(new file)
copy  platforms/android/platform_www/cordova-js-src/exec.js 
platforms/android/assets/www/cordova-js-src/exec.js (new file)
copy  platforms/android/platform_www/cordova-js-src/platform.js 
platforms/android/assets/www/cordova-js-src/platform.js (new file)
mkdir platforms/android/assets/www/cordova-js-src/plugin
mkdir platforms/android/assets/www/cordova-js-src/plugin/android
copy  platforms/android/platform_www/cordova-js-src/plugin/android/app.js 
platforms/android/assets/www/cordova-js-src/plugin/android/app.js (new file)
copy  platforms/android/platform_www/cordova.js 
platforms/android/assets/www/cordova.js (updated file)
copy  platforms/android/platform_www/cordova_plugins.js 
platforms/android/assets/www/cordova_plugins.js (updated file)
delete platforms/android/assets/www/img/cordova.png (no source)
copy  www/index.html platforms/android/assets/www/index.html (updated file)
copy  www/js/index.js platforms/android/assets/www/js/index.js (updated file)
copy  
platforms/android/platform_www/plugins/cordova-plugin-device/www/device.js 
platforms/android/assets/www/plugins/cordova-plugin-device/www/device.js 
(updated file)
Wrote out android application name "HelloWorld" to 
/home/mhofer/hello/platforms/android/res/values/strings.xml
android-versionCode not found in config.xml. Generating a code based on version 
in config.xml (1.0.0): 10000
Wrote out Android package name "com.example.hello" to 
/home/mhofer/hello/platforms/android/src/com/example/hello/MainActivity.java
This app does not have launcher icons defined
This app does not have splash screens defined
This app does not have additional resource files defined
Prepared android project successfully
No scripts found for hook "after_prepare".{quote}

 I then add the background-mode plugin:

{quote}✔ ~/hello
$ cordova plugin add cordova-plugin-background-mode
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df 
([email protected])
Installing "cordova-plugin-background-mode" for android
Plugin dependency "[email protected]" already fetched, using that 
version.
Dependent plugin "cordova-plugin-device" already installed on android.
Adding cordova-plugin-background-mode to package.json
Saved plugin info for "cordova-plugin-background-mode" to config.xml
✔ ~/hello
$ cat package.json
{
"name": "com.example.hello",
"displayName": "HelloWorld",
"version": "1.0.0",
"description": "A sample Apache Cordova application that responds to the 
deviceready event.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Apache Cordova Team",
"license": "Apache-2.0",
"dependencies": {
"cordova-android": "^6.3.0-nightly.2017.9.21.dddb2837",
"cordova-plugin-background-mode": "^0.7.2",
"cordova-plugin-device": "^1.1.6",
"cordova-plugin-whitelist": "^1.3.2"
},
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-plugin-device": {},
"cordova-plugin-background-mode": {}
},
"platforms": [
              "android"
              ]
}
}✔ ~/hello
$ cat config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.hello" version="1.0.0" 
xmlns="http://www.w3.org/ns/widgets"; 
xmlns:cdv="http://cordova.apache.org/ns/1.0";>
<name>HelloWorld</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://cordova.io";>
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*"; />
<allow-intent href="https://*/*"; />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*"; />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="android" spec="^6.3.0-nightly.2017.9.20.dddb2837" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
<plugin name="cordova-plugin-device" spec="^1.1.6" />
<plugin name="cordova-plugin-background-mode" spec="^0.7.2" />
</widget>{quote}

Still, the prepare works as expected:

{quote}✔ ~/hello
$ rm -rf platforms/ plugins/
✔ ~/hello
$ cordova prepare --verbose
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df 
([email protected])
No scripts found for hook "before_prepare".
Checking config.xml and package.json for saved platforms that haven't been 
added to the project
Config.xml and package.json platforms are the same. No pkg.json modification.
Package.json and config.xml platforms are different. Updating config.xml with 
most current list of platforms.
Discovered platform "android@^6.3.0-nightly.2017.9.21.dddb2837" in config.xml 
or package.json. Adding it to the project
No scripts found for hook "before_platform_add".
Using cordova-fetch for cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Running command: npm install cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Command finished with error code 0: npm 
install,cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Removing "cordova-" prefix from cordova-android
Warning: using prerelease platform [email protected].
Use 'cordova platform add android@latest' to add the latest published version 
instead.
Adding android project...
PlatformApi successfully found for platform android
Creating Cordova project for the Android platform:
Path: platforms/android
Package: com.example.hello
Name: HelloWorld
Activity: MainActivity
Android target: android-26
Copying android template project to platforms/android
Subproject Path: CordovaLib
Android project created with [email protected]
Saving [email protected] into platforms.json
No scripts found for hook "after_platform_add".
PlatformApi successfully found for platform android
Checking config.xml for saved plugins that haven't been added to the project
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the 
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-whitelist@^1.3.2"
Running command: npm install cordova-plugin-whitelist@^1.3.2
Command finished with error code 0: npm install,cordova-plugin-whitelist@^1.3.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-whitelist" => 
"/home/mhofer/hello/plugins/cordova-plugin-whitelist"
Calling plugman.install on plugin 
"/home/mhofer/hello/plugins/cordova-plugin-whitelist" for platform "android
Installing "cordova-plugin-whitelist" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0: 
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin 
cordova-plugin-whitelist on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-whitelist" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-whitelist on android.

               This plugin is only applicable for versions of cordova-android 
greater than 4.0. If you have a previous platform version, you do *not* need 
this plugin since the whitelist will be built in.

Finding scripts for "after_plugin_install" hook from plugin 
cordova-plugin-whitelist on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Discovered plugin "cordova-plugin-device" in config.xml. Adding it to the 
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-device@^1.1.6"
Running command: npm install cordova-plugin-device@^1.1.6
Command finished with error code 0: npm install,cordova-plugin-device@^1.1.6
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-device" => 
"/home/mhofer/hello/plugins/cordova-plugin-device"
Calling plugman.install on plugin 
"/home/mhofer/hello/plugins/cordova-plugin-device" for platform "android
Installing "cordova-plugin-device" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0: 
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin 
cordova-plugin-device on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-device" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-device on android.
Finding scripts for "after_plugin_install" hook from plugin 
cordova-plugin-device on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Discovered plugin "cordova-plugin-background-mode" in config.xml. Adding it to 
the project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-background-mode@^0.7.2"
Running command: npm install cordova-plugin-background-mode@^0.7.2
Command finished with error code 0: npm 
install,cordova-plugin-background-mode@^0.7.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-background-mode" 
=> "/home/mhofer/hello/plugins/cordova-plugin-background-mode"
Calling plugman.install on plugin 
"/home/mhofer/hello/plugins/cordova-plugin-background-mode" for platform 
"android
Installing "cordova-plugin-background-mode" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0: 
/home/mhofer/hello/platforms/android/cordova/version
Dependencies detected, iterating through them...
Requesting plugin "cordova-plugin-device".
Plugin dependency "[email protected]" already fetched, using that 
version.
Dependent plugin "cordova-plugin-device" already installed on android.
Finding scripts for "before_plugin_install" hook from plugin 
cordova-plugin-background-mode on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-background-mode" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-background-mode on android.
Finding scripts for "after_plugin_install" hook from plugin 
cordova-plugin-background-mode on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Checking for any plugins added to the project that have not been installed in 
android platform
No differences found between plugins added to project and installed in android 
platform. Continuing...
Generating platform-specific config.xml from defaults for android at 
/home/mhofer/hello/platforms/android/res/xml/config.xml
Merging project's config.xml into platform-specific android config.xml
Merging and updating files from [www, platforms/android/platform_www] to 
platforms/android/assets/www
  mkdir platforms/android/assets/www/cordova-js-src
  mkdir platforms/android/assets/www/cordova-js-src/android
  copy  
platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js 
platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js (new 
file)
  copy  
platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js 
platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js 
(new file)
  copy  platforms/android/platform_www/cordova-js-src/exec.js 
platforms/android/assets/www/cordova-js-src/exec.js (new file)
  copy  platforms/android/platform_www/cordova-js-src/platform.js 
platforms/android/assets/www/cordova-js-src/platform.js (new file)
  mkdir platforms/android/assets/www/cordova-js-src/plugin
  mkdir platforms/android/assets/www/cordova-js-src/plugin/android
  copy  platforms/android/platform_www/cordova-js-src/plugin/android/app.js 
platforms/android/assets/www/cordova-js-src/plugin/android/app.js (new file)
  copy  platforms/android/platform_www/cordova.js 
platforms/android/assets/www/cordova.js (updated file)
  copy  platforms/android/platform_www/cordova_plugins.js 
platforms/android/assets/www/cordova_plugins.js (updated file)
  delete platforms/android/assets/www/img/cordova.png (no source)
  copy  www/index.html platforms/android/assets/www/index.html (updated file)
  copy  www/js/index.js platforms/android/assets/www/js/index.js (updated file)
  copy  
platforms/android/platform_www/plugins/cordova-plugin-background-mode/www/background-mode.js
 
platforms/android/assets/www/plugins/cordova-plugin-background-mode/www/background-mode.js
 (updated file)
  copy  
platforms/android/platform_www/plugins/cordova-plugin-device/www/device.js 
platforms/android/assets/www/plugins/cordova-plugin-device/www/device.js 
(updated file)
Wrote out android application name "HelloWorld" to 
/home/mhofer/hello/platforms/android/res/values/strings.xml
android-versionCode not found in config.xml. Generating a code based on version 
in config.xml (1.0.0): 10000
Wrote out Android package name "com.example.hello" to 
/home/mhofer/hello/platforms/android/src/com/example/hello/MainActivity.java
This app does not have launcher icons defined
This app does not have splash screens defined
This app does not have additional resource files defined
Prepared android project successfully
No scripts found for hook "after_prepare".{quote}

I now switch the order of these two plugins in config.xml:

{quote}✔ ~/hello
$ cat config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.hello" version="1.0.0" 
xmlns="http://www.w3.org/ns/widgets"; 
xmlns:cdv="http://cordova.apache.org/ns/1.0";>
<name>HelloWorld</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://cordova.io";>
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*"; />
<allow-intent href="https://*/*"; />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*"; />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="android" spec="^6.3.0-nightly.2017.9.20.dddb2837" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
<plugin name="cordova-plugin-background-mode" spec="^0.7.2" />
<plugin name="cordova-plugin-device" spec="^1.1.6" />
</widget>{quote}

And again do the prepare, this time it causes the error:

{quote}✔ ~/hello
$ rm -rf platforms/ plugins/
✔ ~/hello
$ cordova prepare --verbose
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df 
([email protected])
No scripts found for hook "before_prepare".
Checking config.xml and package.json for saved platforms that haven't been 
added to the project
Config.xml and package.json platforms are the same. No pkg.json modification.
Package.json and config.xml platforms are different. Updating config.xml with 
most current list of platforms.
Discovered platform "android@^6.3.0-nightly.2017.9.21.dddb2837" in config.xml 
or package.json. Adding it to the project
No scripts found for hook "before_platform_add".
Using cordova-fetch for cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Running command: npm install cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Command finished with error code 0: npm 
install,cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Removing "cordova-" prefix from cordova-android
Warning: using prerelease platform [email protected].
Use 'cordova platform add android@latest' to add the latest published version 
instead.
Adding android project...
PlatformApi successfully found for platform android
Creating Cordova project for the Android platform:
        Path: platforms/android
        Package: com.example.hello
        Name: HelloWorld
        Activity: MainActivity
        Android target: android-26
Copying android template project to platforms/android
Subproject Path: CordovaLib
Android project created with [email protected]
Saving [email protected] into platforms.json
No scripts found for hook "after_platform_add".
PlatformApi successfully found for platform android
Checking config.xml for saved plugins that haven't been added to the project
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the 
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-whitelist@^1.3.2"
Running command: npm install cordova-plugin-whitelist@^1.3.2
Command finished with error code 0: npm install,cordova-plugin-whitelist@^1.3.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-whitelist" => 
"/home/mhofer/hello/plugins/cordova-plugin-whitelist"
Calling plugman.install on plugin 
"/home/mhofer/hello/plugins/cordova-plugin-whitelist" for platform "android
Installing "cordova-plugin-whitelist" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0: 
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin 
cordova-plugin-whitelist on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-whitelist" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-whitelist on android.

This plugin is only applicable for versions of cordova-android greater than 
4.0. If you have a previous platform version, you do *not* need this plugin 
since the whitelist will be built in.

Finding scripts for "after_plugin_install" hook from plugin 
cordova-plugin-whitelist on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Discovered plugin "cordova-plugin-background-mode" in config.xml. Adding it to 
the project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-background-mode@^0.7.2"
Running command: npm install cordova-plugin-background-mode@^0.7.2
Command finished with error code 0: npm 
install,cordova-plugin-background-mode@^0.7.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-background-mode" 
=> "/home/mhofer/hello/plugins/cordova-plugin-background-mode"
Calling plugman.install on plugin 
"/home/mhofer/hello/plugins/cordova-plugin-background-mode" for platform 
"android
Installing "cordova-plugin-background-mode" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0: 
/home/mhofer/hello/platforms/android/cordova/version
Dependencies detected, iterating through them...
Requesting plugin "cordova-plugin-device".
Plugin dependency "cordova-plugin-device" not fetched, retrieving then 
installing.
Running command: npm install cordova-plugin-device
Command finished with error code 0: npm install,cordova-plugin-device
Failed to install 'cordova-plugin-background-mode': Error
    at 
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/fetch.js:215:37
    at _rejected 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:864:24)
    at 
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:890:30
    at Promise.when 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:1142:31)
    at Promise.promise.promiseDispatch 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:808:41)
    at 
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:624:44
    at runSingle 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:137:13)
    at flush 
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
Failed to restore plugin "cordova-plugin-background-mode" from config.xml. You 
might need to try adding it again. Error: Failed to fetch plugin 
cordova-plugin-device via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Failed to get absolute path to installed module
Discovered plugin "cordova-plugin-device" in config.xml. Adding it to the 
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-device@^1.1.6"
Running command: npm install cordova-plugin-device@^1.1.6
Command finished with error code 216: npm install,cordova-plugin-device@^1.1.6
Failed to restore plugin "cordova-plugin-device" from config.xml. You might 
need to try adding it again. Error: Failed to fetch plugin 
cordova-plugin-device@^1.1.6 via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Error: npm: Command failed with exit code 216 Error output:
npm WARN checkPermissions Missing write access to 
/home/mhofer/hello/node_modules/cordova-plugin-device
npm WARN [email protected] No repository field.

npm ERR! path /home/mhofer/hello/node_modules/cordova-plugin-device
npm ERR! code ELOOP
npm ERR! errno -40
npm ERR! syscall access
npm ERR! ELOOP: too many symbolic links encountered, access 
'/home/mhofer/hello/node_modules/cordova-plugin-device'

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/mhofer/.npm/_logs/2017-09-21T15_28_52_386Z-debug.log
Checking for any plugins added to the project that have not been installed in 
android platform
No differences found between plugins added to project and installed in android 
platform. Continuing...
Generating platform-specific config.xml from defaults for android at 
/home/mhofer/hello/platforms/android/res/xml/config.xml
Merging project's config.xml into platform-specific android config.xml
Merging and updating files from [www, platforms/android/platform_www] to 
platforms/android/assets/www
  mkdir platforms/android/assets/www/cordova-js-src
  mkdir platforms/android/assets/www/cordova-js-src/android
  copy  
platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js 
platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js (new 
file)
  copy  
platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js 
platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js 
(new file)
  copy  platforms/android/platform_www/cordova-js-src/exec.js 
platforms/android/assets/www/cordova-js-src/exec.js (new file)
  copy  platforms/android/platform_www/cordova-js-src/platform.js 
platforms/android/assets/www/cordova-js-src/platform.js (new file)
  mkdir platforms/android/assets/www/cordova-js-src/plugin
  mkdir platforms/android/assets/www/cordova-js-src/plugin/android
  copy  platforms/android/platform_www/cordova-js-src/plugin/android/app.js 
platforms/android/assets/www/cordova-js-src/plugin/android/app.js (new file)
  copy  platforms/android/platform_www/cordova.js 
platforms/android/assets/www/cordova.js (updated file)
  copy  platforms/android/platform_www/cordova_plugins.js 
platforms/android/assets/www/cordova_plugins.js (updated file)
  delete platforms/android/assets/www/img/cordova.png (no source)
  copy  www/index.html platforms/android/assets/www/index.html (updated file)
  copy  www/js/index.js platforms/android/assets/www/js/index.js (updated file)
Wrote out android application name "HelloWorld" to 
/home/mhofer/hello/platforms/android/res/values/strings.xml
android-versionCode not found in config.xml. Generating a code based on version 
in config.xml (1.0.0): 10000
Wrote out Android package name "com.example.hello" to 
/home/mhofer/hello/platforms/android/src/com/example/hello/MainActivity.java
This app does not have launcher icons defined
This app does not have splash screens defined
This app does not have additional resource files defined
Prepared android project successfully
No scripts found for hook "after_prepare".{quote}

Notice how the version of the device plugin has been modifed and 
_node_modules/cordova-plugin-device_ is now a symlink pointing to itself:

{quote}✔ ~/hello
$ cat package.json
{
  "name": "com.example.hello",
  "displayName": "HelloWorld",
  "version": "1.0.0",
  "description": "A sample Apache Cordova application that responds to the 
deviceready event.",
  "main": "index.js",
  "scripts": \{
    "test": "echo \"Error: no test specified\" && exit 1"
  \},
  "author": "Apache Cordova Team",
  "license": "Apache-2.0",
  "dependencies": \{
    "cordova-android": "^6.3.0-nightly.2017.9.21.dddb2837",
    "cordova-plugin-background-mode": "^0.7.2",
    "cordova-plugin-device": "file:node_modules/cordova-plugin-device",
    "cordova-plugin-whitelist": "^1.3.2"
  \},
  "cordova": \{
    "plugins": \{
      "cordova-plugin-whitelist": {},
      "cordova-plugin-device": {},
      "cordova-plugin-background-mode": {}
    \},
    "platforms": \[
      "android"
    \]
  \}
}
✔ ~/hello
$ cat config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.hello" version="1.0.0" 
xmlns="http://www.w3.org/ns/widgets"; 
xmlns:cdv="http://cordova.apache.org/ns/1.0";>
    <name>HelloWorld</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready 
event.
    </description>
    <author email="[email protected]" href="http://cordova.io";>
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <access origin="*" />
    <allow-intent href="http://*/*"; />
    <allow-intent href="https://*/*"; />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*"; />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
    <engine name="android" spec="^6.3.0-nightly.2017.9.21.dddb2837" />
    <plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
    <plugin name="cordova-plugin-device" spec="^1.1.6" />
    <plugin name="cordova-plugin-background-mode" spec="^0.7.2" />
</widget>
✔ ~/hello
$ ls \-ld node_modules/cordova-*
drwxrwxr-x 9 mhofer mhofer 4096 Sep 21 17:28 node_modules/cordova-android
drwxrwxr-x 4 mhofer mhofer 4096 Sep 21 17:28 
node_modules/cordova-plugin-background-mode
lrwxrwxrwx 1 mhofer mhofer   21 Sep 21 17:28 node_modules/cordova-plugin-device 
-> cordova-plugin-device
drwxrwxr-x 5 mhofer mhofer 4096 Sep 21 17:28 
node_modules/cordova-plugin-whitelist{quote}

The same error occures, if I add the background-plugin first, then the device 
plugin.




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to