[ https://issues.apache.org/jira/browse/CB-13308?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16189300#comment-16189300 ]
Steve Gill commented on CB-13308: --------------------------------- Solved this bug with this PR. https://github.com/apache/cordova-fetch/pull/5 Appreciate you sending such detailed reproduce steps. Really helped out. It is happening because we run `npm install cordova-plugin-device` from within the node_modules directory in cordova-fetch. In npm@5+, if you run npm install in the node_modules directory and that module already exists, it creates a broken symlink. Running it in the root of the project won't cause this issue. So I switched cordova-fetch to that. Definitely a npm bug IMO. Didn't exist before npm@5 > 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: cordova@7.0.0 > Environment: I'm using the following versions on Ubuntu Linux: > {quote}✔ ~ > $ node --version > v8.3.0 > ✔ ~ > $ npm --version > 5.4.2 > ✔ ~ > $ cordova --version > 7.0.2-nightly.2017.9.20.596da5df > (cordova-lib@7.0.2-nightly.2017.9.20.701c15fe){quote} > Reporter: Mathis Hofer > Assignee: Steve Gill > Labels: tools-next > > 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 > (cordova-lib@7.0.2-nightly.2017.9.20.701c15fe) > Creating a new cordova project. > ✔ ~ > $ cd hello/ > ✔ ~/hello > $ cordova platform add android > Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df > (cordova-lib@7.0.2-nightly.2017.9.20.701c15fe) > Using cordova-fetch for cordova-android@6.3.0-nightly.2017.9.20.dddb2837 > Warning: using prerelease platform android@6.3.0-nightly.2017.9.20.dddb2837. > 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 cordova-android@6.3.0-nightly.2017.9.20.dddb2837 > 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 > (cordova-lib@7.0.2-nightly.2017.9.20.701c15fe) > 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="d...@cordova.apache.org" 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 > (cordova-lib@7.0.2-nightly.2017.9.20.701c15fe) > 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 android@6.3.0-nightly.2017.9.21.dddb2837. > 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 cordova-android@6.3.0-nightly.2017.9.21.dddb2837 > Saving android@6.3.0-nightly.2017.9.21.dddb2837 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 > (cordova-lib@7.0.2-nightly.2017.9.20.701c15fe) > Installing "cordova-plugin-background-mode" for android > Plugin dependency "cordova-plugin-device@1.1.6" 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="d...@cordova.apache.org" 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 > (cordova-lib@7.0.2-nightly.2017.9.20.701c15fe) > 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 android@6.3.0-nightly.2017.9.21.dddb2837. > 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 cordova-android@6.3.0-nightly.2017.9.21.dddb2837 > Saving android@6.3.0-nightly.2017.9.21.dddb2837 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 "cordova-plugin-device@1.1.6" 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="d...@cordova.apache.org" 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 > (cordova-lib@7.0.2-nightly.2017.9.20.701c15fe) > 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 android@6.3.0-nightly.2017.9.21.dddb2837. > 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 cordova-android@6.3.0-nightly.2017.9.21.dddb2837 > Saving android@6.3.0-nightly.2017.9.21.dddb2837 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 com.example.hello@1.0.0 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="d...@cordova.apache.org" 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: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org