科多瓦钩:停止节点,直到承诺完成

我正在写一个cordova钩子来更新before_prepare插件。

这里有三个问题:

  1. 我得到的错误:[TypeError:不能读取未定义的属性'缓冲']
  2. 我想停止stream程,直到插件更新
  3. 是否有可能知道插件是从cordova插件registry还是从git仓库添加的?

我正在使用的代码:

 var plugin = context.requireCordovaModule('cordova-lib/src/cordova/plugin'), pluginNames = context.opts.cordova.plugins; function updatePlugin(pluginNames) { pluginNames.forEach(function (pluginName) { return removePlugin(pluginName).then(function () { addPlugin(pluginName); }, function(e) { console.log(e); // ERROR: [TypeError: Cannot read property 'buffer' of undefined] }); }); } function removePlugin(pluginNames) { return plugin('rm', pluginNames); } function addPlugin(pluginNames) { return plugin('add', pluginNames); } updatePlugin(pluginNames); 

要解决1和2,请尝试将您的nodejs更新为最新的稳定版本,并使用execSync同步执行Cordova CLI命令:

 var execSync = require('child_process').execSync; ... execSync("cordova plugin rm " + plugin); execSync("cordova plugin add " + plugin);