cordova-cli icon indicating copy to clipboard operation
cordova-cli copied to clipboard

'--searchpath' not working properly on Cordova 10.0

Open hugolden opened this issue 5 years ago • 12 comments

Problem

I am trying to adapting our product with Cordova CLI 10. After upgrading to CLI 10.0, when adding plugin in cordova project using '--searchpath' parameter, query on registry will be hit before on local search path

What is expected to happen?

'--searchpath' should help the command query the folder I set before querying on the registry

What does actually happen?

'--searchpath' is hitting registry before local folder. This is not consistent with the definition of this parameter

Information

Here is the command history

I hid the registry name, plugin name and version for business reason

cordova plugin add <my plugin>@<my version> --searchpath /Users/*****/Documents/SDK/plugins Installing "<my plugin>" for android Failed to install '<my plugin>': CordovaError: Failed to fetch plugin @<my registry>/<my dependency>@<my version> via registry. Probably this is either a connection problem, or plugin spec is incorrect. Check your connection and plugin name/version/URL. CordovaError: Error: npm: Command failed with exit code 1 Error output: npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/@%2f - Not found npm ERR! 404 npm ERR! 404 '@<my registry>/<my dependency>@<my version> ' is not in the npm registry. npm ERR! 404 You should bug the author to publish it (or use the name yourself!) npm ERR! 404 npm ERR! 404 Note that you can also install from a npm ERR! 404 tarball, folder, http url, or git url.

Environment, Platform, Device

MacOS 10.15.7 npm v6.14.7 node v14.4.0

Version information

Cordova CLI 10.0.0

Checklist

  • [x] I searched for existing GitHub issues
  • [x] I updated all Cordova tooling to most recent version
  • [x] I included all the necessary information above

hugolden avatar Nov 16 '20 07:11 hugolden

In my testing it appears --searchpath works for non-scoped package names, but does not with scoped packages. Do you observe the same behaviour?

breautek avatar Nov 25 '20 19:11 breautek

Using --searchpath fine here too, with non-scoped packages.

Common mistake is to call cordova plugin add with directory name instead of plugin id. @hugolden Is the scoping really part of your plugin id in plugin.xml?

ath0mas avatar Feb 20 '21 10:02 ath0mas

@ath0mas Yes indeed. I am using scope on my package names. Is scoping deprecated? Are you meaning that scoping has a higher priority than searchpath parameter?

hugolden avatar Apr 21 '21 06:04 hugolden

@breautek Thank you for you reply. I am using scoping for my plugins.

hugolden avatar Apr 21 '21 06:04 hugolden

Hey guys,

I found scoping can cause many issues.

I defined the dependency of my plugin with id= "@foo/ my-plugin-bar.

When adding the plugin, the dependency plugin can be fetched correctly, while cordova CLI will raise error: Expected plugin to have ID "@foo/my-plugin-bar" but got "my-plugin-bar"

I found that the target plugin was fetched to the foo folder under plugin folder while the dependency plugin is under the plugin folder NOT the foo folder.

I believe this is causing the failure on looking up for the dependency.

Is it a bug?

hugolden avatar Apr 23 '21 11:04 hugolden

I have the same issue. Is there a solution for this?

ChrisDev88 avatar May 11 '21 15:05 ChrisDev88

@breautek I have ever tried to add scope to plugin and the searchpath paramter works as expected in this way. However altering id will cause javascript source locating under /plugins//... I don't want to modify the source code to workaround this issue.

Is there any plan to fix this regression? Actually it works quite good on cordova 9

hugolden avatar Jul 16 '21 07:07 hugolden

I haven't had a chance to look into a solution, or even the cause but a workaround could be either cordova plugin add <the actual path to the plugin> or, npm pack the plugin and install cordova plugin add the-tgz-file.tgz

breautek avatar Sep 13 '21 23:09 breautek

I haven't had a chance to look into a solution, or even the cause but a workaround could be either cordova plugin add <the actual path to the plugin> or, npm pack the plugin and install cordova plugin add the-tgz-file.tgz

Once their is registry in dependency of this plugin, this would not work

hugolden avatar Nov 26 '21 07:11 hugolden

Same issue here. Any update on this topic?

cgerold avatar Jan 13 '22 14:01 cgerold

It seems like Cordova version 10.0.0 still has an issue related to adding a plugin with --searchpath. You can change the version of your Cordova CLI to 9.0.0 and it should work fine.

rajeshkumr avatar Jan 18 '23 20:01 rajeshkumr

This problem also exists in CLI version 11.1.0 of Cordova. When the plug-in that the added plug-in depends on is in the same directory, it does not search the specified --searchpath directory, but searches the dependent plug-in through the network. Node.js related, Node.js v14 version is normal, v16~v18 issues.

whilename avatar Mar 02 '23 09:03 whilename