科多瓦钩:停止节点,直到承诺完成
我正在写一个cordova钩子来更新before_prepare
插件。
这里有三个问题:
- 我得到的错误:[TypeError:不能读取未定义的属性'缓冲']
- 我想停止stream程,直到插件更新
- 是否有可能知道插件是从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);