Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-12918

Inconsistent behavior between "cordova prepare" and "cordova plugin add" when installing plugin from local folder

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Reopened
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 7.0.1
    • Fix Version/s: None
    • Component/s: cordova-cli
    • Labels:

      Description

      Running "cordova prepare" and "cordova plugin add" handle plugin installation from a local folder differently and either one or another breaks depending on which one used first.
      For example, I have a plugin defined as following in the config.xml:

      <widget ...>
        ...  
        <plugin name="cordova-plugin-ios-no-export-compliance" spec="./custom_plugins/cordova-plugin-ios-no-export-compliance" />
        ...
      </widget>
      

      This config is created when I run "cordova plugin add ./custom_plugins/cordova-plugin-ios-no-export-compliance" and everything works as expected. But, if you delete the plugin from the plugins folder and try to run "cordova prepare" afterwards it will fail with the following message:

      Discovered plugin "cordova-plugin-ios-no-export-compliance" in config.xml. Adding it to the project
      Failed to restore plugin "cordova-plugin-ios-no-export-compliance" from config.xml. You might need to try adding it again. Error: Failed to fetch plugin cordova-plugin-ios-no-export-compliance@file:custom_plugins/cordova-plugin-ios-no-export-compliance 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 254 Error output:
      npm ERR! addLocal Could not install [project path]/node_modules/custom_plugins/cordova-plugin-ios-no-export-compliance
      npm ERR! path [project path]/node_modules/custom_plugins/cordova-plugin-ios-no-export-compliance
      npm ERR! code ENOENT
      npm ERR! errno -2
      npm ERR! syscall open
      npm ERR! enoent ENOENT: no such file or directory, open '[project path]/node_modules/custom_plugins/cordova-plugin-ios-no-export-compliance'
      npm ERR! enoent This is most likely not a problem with npm itself
      npm ERR! enoent and is related to npm not being able to find a file.
      npm ERR! enoent
      

      Also, after running "cordova prepare" the plugin entry in the config.xml was changed to:

      <plugin name="cordova-plugin-ios-no-export-compliance" spec="file:custom_plugins/cordova-plugin-ios-no-export-compliance" />
      

        Attachments

        1. custom_plugins.zip
          3 kB
          Max Mednik

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                maxtacco Max Mednik
              • Votes:
                1 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated: