You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Carlos Santana (JIRA)" <ji...@apache.org> on 2016/03/25 20:49:25 UTC

[jira] [Commented] (CB-10961) CLI 6.1.0 ENOENT: no such file or directory adding ios platform when plugins present or required

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

Carlos Santana commented on CB-10961:
-------------------------------------

This commit cause the problem https://github.com/apache/cordova-lib/commit/3b9face5187857d354d85f3e3f4316cbace100db

It switch the order from platform create, prepare for the platform added, then install plugins (create, prepare, install)
to (create, install, prepare)

It affects config munges.

Problem is that config.xml when installing plugins for the first time it's putting two <name> tags in config.xml, <name> should be single instance 
The problem this is handle in cordova-common inside cordova-ios, and it will required a new release of cordova-ios but at the same time cli will be broken with older ios like 4.0.1

I think way to fix is to run prepare twice in cordova-lib (create, prepare, install, prepare) and fix cordova-common unique <name> also.


> CLI 6.1.0 ENOENT: no such file or directory adding ios platform when plugins present or required
> ------------------------------------------------------------------------------------------------
>
>                 Key: CB-10961
>                 URL: https://issues.apache.org/jira/browse/CB-10961
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: CLI
>    Affects Versions: 6.1.0
>            Reporter: Carlos Santana
>            Priority: Critical
>              Labels: cli, ios, regresion
>
> New CLI 6.1.0 has a regression when adding platform ios, not using HelloCordova name for the app and plugins are present or declare in config.xml
> To reproduce there are multiple use cases:
> 1. Create new app with name app1, add a plugin then add ios platform
> 2, Create new app with a template with a plugin in config.xml and that specifies a name app1 in config.xml or create cli, then add ios platform
> 3. Create new app with name app1 add a plugin declaration in config.xml globally or under ios platform and then add ios platform
> Initial investigation is that ios xcode project is always created with HelloCordova and the name specified in config.xml
> $ cordova create app1 com.app1 app1
> Creating a new cordova project.
> ~/dev/cordova/cli-6.1.0
> 🍔  $ cd app1/
> ~/dev/cordova/cli-6.1.0/app1
> 🍔  $ cordova plugin add cordova-plugin-camera --save
> Fetching plugin "cordova-plugin-camera" via npm
> Saved plugin info for "cordova-plugin-camera" to config.xml
> ~/dev/cordova/cli-6.1.0/app1
> 🍔  $ cat config.xml
> <?xml version='1.0' encoding='utf-8'?>
> <widget id="com.app1" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
>     <name>app1</name>
>     <description>
>         A sample Apache Cordova application that responds to the deviceready event.
>     </description>
>     <author email="dev@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>
>     <plugin name="cordova-plugin-camera" spec="~2.1.1" />
> </widget>
> ~/dev/cordova/cli-6.1.0/app1
> 🍔  $ cordova platform add ios
> Adding ios project...
> iOS project created with cordova-ios@4.1.0
> Installing "cordova-plugin-camera" for ios
> Discovered plugin "cordova-plugin-whitelist" in config.xml. Installing to the project
> Fetching plugin "cordova-plugin-whitelist@1" via npm
> Installing "cordova-plugin-whitelist" for ios
> Failed to install 'cordova-plugin-whitelist':Error: ENOENT: no such file or directory, open '/Users/csantana23/Documents/dev/cordova/cli-6.1.0/app1/platforms/ios/app1.xcodeproj/project.pbxproj'
>     at Error (native)
>     at Object.fs.openSync (fs.js:584:18)
>     at Object.fs.writeFileSync (fs.js:1224:33)
>     at Object.cachedProjectFiles.(anonymous function).write (/Users/csantana23/Documents/dev/cordova/cli-6.1.0/app1/platforms/ios/cordova/lib/projectFile.js:73:16)
>     at /Users/csantana23/Documents/dev/cordova/cli-6.1.0/app1/platforms/ios/cordova/lib/plugman/Plugman.js:85:21
>     at _fulfilled (/Users/csantana23/Documents/dev/cordova/cli-6.1.0/app1/platforms/ios/cordova/node_modules/q/q.js:834:54)
>     at self.promiseDispatch.done (/Users/csantana23/Documents/dev/cordova/cli-6.1.0/app1/platforms/ios/cordova/node_modules/q/q.js:863:30)
>     at Promise.promise.promiseDispatch (/Users/csantana23/Documents/dev/cordova/cli-6.1.0/app1/platforms/ios/cordova/node_modules/q/q.js:796:13)
>     at /Users/csantana23/Documents/dev/cordova/cli-6.1.0/app1/platforms/ios/cordova/node_modules/q/q.js:857:14
>     at runSingle (/Users/csantana23/Documents/dev/cordova/cli-6.1.0/app1/platforms/ios/cordova/node_modules/q/q.js:137:13)
> ~/dev/cordova/cli-6.1.0/app1



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org