在ios上使用ionic/cordova添加平台期间未安装插件

在ios上使用ionic/cordova添加平台期间未安装插件,cordova,ionic-framework,ionic,cordova-plugins,Cordova,Ionic Framework,Ionic,Cordova Plugins,在ionic中添加带有已在package.json中定义的插件的平台时,会在plugins/ios.json中安装并引用一组随机插件 作为一个具体示例,我的package.json包含以下内容: cordovaPlugins: [ "com.danielcwilson.plugins.googleanalytics", "com.ionic.keyboard", "cordova-plugin-console", "cordova-plugin-device",

在ionic中添加带有已在
package.json
中定义的插件的平台时,会在
plugins/ios.json
中安装并引用一组随机插件

作为一个具体示例,我的
package.json
包含以下内容:

cordovaPlugins: [
    "com.danielcwilson.plugins.googleanalytics",
    "com.ionic.keyboard",
    "cordova-plugin-console",
    "cordova-plugin-device",
    "uk.co.whiteoctober.cordova.appversion",
    "com.paypal.cordova.mobilesdk",
    "nl.x-services.plugins.flashlight",
    "cordova-plugin-inappbrowser",
    "https://github.com/wildabeast/BarcodeScanner"
]
在第一次运行时,
plugins/ios.json
包含:

com.danielcwilson.plugins.googleanalytics
com.paypal.cordova.mobilesdk
com.phonegap.plugins.barcodescanner
cordova-plugin-console
nl.x-services.plugins.flashlight
uk.co.whiteoctober.cordova.appversion
如果我清除“平台和插件”文件夹并重新添加平台,那么在第二次运行时,我会得到:

com.ionic.keyboard
com.paypal.cordova.mobilesdk
cordova-plugin-console
cordova-plugin-device
cordova-plugin-inappbrowser
nl.x-services.plugins.flashlight
uk.co.whiteoctober.cordova.appversion
等等

在爱奥尼亚平台添加ios的
步骤中,我确实看到了所有被添加的插件;但是,偶尔
运行命令:/path/to/project/hooks/after\u platform\u add/010\u install\u plugins.js
步骤不会运行

有可靠的方法安装插件吗

我正在使用:

| What    | Version |
| :------ | :------ |
| node    | 0.10.39 |
| cordova | 5.1.1   |
| ionic   | 1.6.1   |
010\u install\u plugins.sh的内容按要求:

#!/usr/bin/env node

/**
 * Install all plugins listed in package.json
 * https://raw.githubusercontent.com/diegonetto/generator-ionic/master/templates/hooks/after_platform_add/install_plugins.js
 */
var exec = require('child_process').exec;
var path = require('path');
var sys = require('sys');

var packageJSON = null;

try {
  packageJSON = require('../../package.json');
} catch(ex) {
  console.log('\nThere was an error fetching your package.json file.')
  console.log('\nPlease ensure a valid package.json is in the root of this project\n')
  return;
}

var cmd = process.platform === 'win32' ? 'cordova.cmd' : 'cordova';
// var script = path.resolve(__dirname, '../../node_modules/cordova/bin', cmd);

packageJSON.cordovaPlugins = packageJSON.cordovaPlugins || [];
packageJSON.cordovaPlugins.forEach(function (plugin) {
  exec('cordova plugin add ' + plugin, function (error, stdout, stderr) {
    sys.puts(stdout);
  });
});

这是爱奥尼亚的默认设置。

这是我以前遇到的问题,也许你已经做过了,但值得一试:chmod+x 010_install_plugins.js

事实证明,这个错误存在于爱奥尼亚本身

钩子文件异步运行所有插件安装,这意味着文件被同时写入,因此更改丢失

我已向
ionic cli
提交拉取请求以修复此问题。这一变化将取代:

 packageJSON.cordovaPlugins.forEach(function (plugin) {
   exec('cordova plugin add ' + plugin, function (error, stdout, stderr) {
     sys.puts(stdout);
   });
});
与:


010_install_plugins.js

中,您可以显示010_install_plugins.js
cordova plugin add cordova plugin console
?你试过这个吗?谢谢,但是爱奥尼亚创造了钩子并让它们为我执行。太棒了,这在过去几周给我带来了很多麻烦,谢谢!
function installNextPlugin() {
    var curPlugin = packageJSON.cordovaPlugins.shift();
    if (curPlugin) {
        exec('cordova plugin add ' + curPlugin, function(err, stdout, stderr) {
            sys.puts(stdout);
            sys.puts(stderr);
        })
            .on("exit", function(code) {
                if (code) {
                    console.log("'cordova plugin add " + curPlugin + "' failed with code '" + code + "'");
                    process.exit(code);
                } else {
                    installNextPlugin();
                }
            });
    }
}

installNextPlugin();