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

Ken Naito edited comment on CB-13797 at 6/7/18 12:29 PM:
---------------------------------------------------------

I confirmed this issue.
One solution for https://github.com/dpogue/cb-13797 is removing      
"code-push": "^2.0.4" in dependencies in package.json.

When we do 'npm install', the npm installs [email protected] in node_modules.
Then we do 'cordova prepare', the cordova installs cordova-plugin-code-push.
Because the cordova-plugin-code-push depends [email protected], the cordova will 
install [email protected].
At this time, depTree in cordova-fetch is as follows (npm ls --depth=0)

{code}
├─┬ UNMET DEPENDENCY [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
{code}

Next the cordova will install cordova-plugin-dialogs, then treeDep becomes
{code}
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
{code}

Comparing both two depTrees, getJsonDiff(tree1, tree2) in cordova-fetch returns 
'code-push'.
This is because 'cordova install cordova-plugin-dialogs' fails with the error 
{code}
Failed to install 'cordova-plugin-code-push': Error: Expected plugin to have ID 
"cordova-plugin-dialogs" but got "code-push".
{code}

In order to resolve this issue, cordova-fetch must find the correct id of 
installed package.




was (Author: knaito):
I confirmed this issue.
One solution for https://github.com/dpogue/cb-13797 is removing      
"code-push": "^2.0.4" in dependencies in package.json.

When we do 'npm install', the npm installs [email protected] in node_modules.
Then we do 'cordova prepare', the cordova installs cordova-plugin-code-push.
Because the cordova-plugin-code-push depends [email protected], the cordova will 
install [email protected].
At this time, depTree in cordova-fetch is as follows (npm ls --depth=0)

{code}
├─┬ UNMET DEPENDENCY [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
{code}

Next the cordova will install cordova-plugin-dialogs, then treeDep becomes
{code}
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
{code}

Comparing both two depTree, getJsonDiff(tree1, tree2) in cordova-fetch returns 
'code-push'.
This is because 'cordova install cordova-plugin-dialogs' fails with the error 
{code}
Failed to install 'cordova-plugin-code-push': Error: Expected plugin to have ID 
"cordova-plugin-dialogs" but got "code-push".
{code}

In order to resolve this issue, cordova-fetch must find the correct id of 
installed package.



> Fetch failing to install plugin dependencies
> --------------------------------------------
>
>                 Key: CB-13797
>                 URL: https://issues.apache.org/jira/browse/CB-13797
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-fetch
>         Environment: [email protected]
> [email protected]
> [email protected]
> [email protected]
> [email protected]
> [email protected]
>  
>            Reporter: Darryl Pogue
>            Assignee: Steve Gill
>            Priority: Critical
>
> I'm currently unable to install Microsoft's cordova-plugin-code-push due to 
> some incredibly confusing errors when installing the plugin dependencies.
> The plugin [lists 3 
> dependencies|https://github.com/Microsoft/cordova-plugin-code-push/blob/e828a5eacd42dcd81bacf121a3e62735c3500227/plugin.xml#L10-L12]
>  in plugin.xml.
> Cordova successfully installs the first (code-push) dependency.
> Cordova attempts to install the second (cordova-plugin-device) dependency. It 
> appears that the npm install is successful.
> At the end of the npm install, cordova-fetch [attempts to 
> discover|https://github.com/apache/cordova-fetch/blob/master/index.js#L100] 
> what was just installed. Rather than finding "cordova-plugin-device", it 
> finds "code-push" for a second time.
> Then it fails with the following confusing error message:
> {noformat}
> Failed to install 'cordova-plugin-code-push': Error: Expected plugin to have 
> ID "cordova-plugin-dialogs" but got "code-push".{noformat}
> The full verbose output from {{cordova prepare}} is below:
> {noformat}
> Discovered plugin "cordova-plugin-code-push" in config.xml. Adding it to the 
> project
> No scripts found for hook "before_plugin_add".
> Calling plugman.fetch on plugin "cordova-plugin-code-push@^1.11.2"
> Running command: npm install cordova-plugin-code-push@^1.11.2 --production 
> --no-save
> Command finished with error code 0: npm 
> install,cordova-plugin-code-push@^1.11.2,--production,--no-save
> Copying plugin "/PROJECT/node_modules/cordova-plugin-code-push" => 
> "/PROJECT/plugins/cordova-plugin-code-push"
> Calling plugman.install on plugin "/PROJECT/plugins/cordova-plugin-code-push" 
> for platform "android
> Installing "cordova-plugin-code-push" for android
> Running command: /PROJECT/platforms/android/cordova/version 
> Command finished with error code 0: 
> /PROJECT/platforms/android/cordova/version 
> Dependencies detected, iterating through them...
> Requesting plugin "[email protected]".
> Plugin dependency "code-push" not fetched, retrieving then installing.
> Running command: npm install [email protected] --production --no-save
> Command finished with error code 0: npm 
> install,[email protected],--production,--no-save
> Copying plugin "/PROJECT/node_modules/code-push" => 
> "/PROJECT/plugins/code-push"
> Installing "code-push" for android
> Finding scripts for "before_plugin_install" hook from plugin code-push on 
> android platform only.
> No scripts found for hook "before_plugin_install".
> Install start for "code-push" on android.
> Beginning processing of action stack for android project...
> Action stack processing complete.
> Install complete for code-push on android.
> Finding scripts for "after_plugin_install" hook from plugin code-push on 
> android platform only.
> No scripts found for hook "after_plugin_install".
> Requesting plugin "cordova-plugin-dialogs@>=1.1.1".
> Plugin dependency "cordova-plugin-dialogs" not fetched, retrieving then 
> installing.
> Running command: npm install cordova-plugin-dialogs@>=1.1.1 --production 
> --no-save
> Command finished with error code 0: npm 
> install,cordova-plugin-dialogs@>=1.1.1,--production,--no-save
> Copying plugin "/PROJECT/node_modules/code-push" => 
> "/PROJECT/plugins/code-push"
> Failed to install 'cordova-plugin-code-push': Error: Expected plugin to have 
> ID "cordova-plugin-dialogs" but got "code-push".
> at checkID (/PROJECT/node_modules/cordova-lib/src/plugman/fetch.js:215:15)
> at /PROJECT/node_modules/cordova-lib/src/plugman/fetch.js:199:9
> at _fulfilled (/PROJECT/node_modules/cordova-lib/node_modules/q/q.js:787:54)
> at self.promiseDispatch.done 
> (/PROJECT/node_modules/cordova-lib/node_modules/q/q.js:816:30)
> at Promise.promise.promiseDispatch 
> (/PROJECT/node_modules/cordova-lib/node_modules/q/q.js:749:13)
> at /PROJECT/node_modules/cordova-lib/node_modules/q/q.js:557:44
> at flush (/PROJECT/node_modules/cordova-lib/node_modules/q/q.js:108:17)
> at process._tickCallback (internal/process/next_tick.js:150:11)
> Failed to restore plugin "cordova-plugin-code-push" from config.xml. You 
> might need to try adding it again. Error: Error: Expected plugin to have ID 
> "cordova-plugin-dialogs" but got "code-push".{noformat}



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

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

Reply via email to