簡體   English   中英

在平台期間未安裝的插件在iOS上添加了ionic / cordova

[英]Plugins not installing during platform add with ionic/cordova on ios

當使用在package.json已定義的插件在ionic中添加平台時,會安裝隨機的一組插件,並在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

等等。

ionic platform add ios步驟中,我確實看到了所有已添加的插件。 但是,有時“ Running command: /path/to/project/hooks/after_platform_add/010_install_plugins.js步驟不會運行。

有安裝插件的可靠方法嗎?

我在用:

| What    | Version |
| :------ | :------ |
| node    | 0.10.39 |
| cordova | 5.1.1   |
| ionic   | 1.6.1   |

要求的010_install_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);
  });
});

這是ionic的默認設置。

事實證明,該錯誤在Ionic本身中。

該掛鈎文件正在異步運行所有插件安裝,這意味着文件是同時寫入的,因此更改丟失。

我已向ionic-cli提交了拉動請求,以在此處解決此問題。 更改是替換為:

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

有:

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();

010_install_plugins.js

這是我之前遇到的,也許您已經做過,但是值得嘗試:chmod + x 010_install_plugins.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM