(Ionic 2)尝试回退到Cordova-lib执行时发生错误:TypeError:无法读取未定义的属性'then'

编辑:使用离子2时发生这种情况。我知道它不稳定,但我认为可能有一些解决这个问题,因为它看起来像别人没有得到这个问题。 编辑结束

出于某种原因,我突然开始尝试构build我的离子应用程序,使用“离子构buildandroid”,还有“离子构buildios”,得到这个错误:

An Error occurred trying to fall back to Cordova-lib execution: TypeError: Cannot read property 'then' of undefined at Object.IonicTask.runCordova (/usr/local/lib/node_modules/ionic/lib/ionic/cordova.js:262:21) at /usr/local/lib/node_modules/ionic/lib/ionic/cordova.js:142:19 at _fulfilled (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:787:54) at self.promiseDispatch.done (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:816:30) at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:749:13) at /usr/local/lib/node_modules/ionic/node_modules/q/q.js:557:44 at flush (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:108:17) at doNTCallback0 (node.js:430:9) at process._tickCallback (node.js:359:13) Error happened [TypeError: Cannot read property 'then' of undefined] TypeError: Cannot read property 'then' of undefined at Object.IonicTask.runCordova (/usr/local/lib/node_modules/ionic/lib/ionic/cordova.js:262:21) at /usr/local/lib/node_modules/ionic/lib/ionic/cordova.js:142:19 at _fulfilled (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:787:54) at self.promiseDispatch.done (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:816:30) at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:749:13) at /usr/local/lib/node_modules/ionic/node_modules/q/q.js:557:44 at flush (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:108:17) at doNTCallback0 (node.js:430:9) at process._tickCallback (node.js:359:13) 

我迷失在这里,不知道从哪里开始寻找。

有没有人看到过这种情况,并指出我正确的方向?

@mabs @mgcdanny

我很确定我已经find了问题的根源。 我跑cordova -v ,看到这个输出 –

 Ross-MBP:test rossmartin$ cordova -v /usr/local/lib/node_modules/cordova/node_modules/update-notifier/node_modules/configstore/index.js:53 throw err; ^ Error: EACCES: permission denied, open '/Users/rossmartin/.config/configstore/update-notifier-cordova.json' You don't have access to this file. 

我然后跑了

 Ross-MBP:test rossmartin$ sudo chown -R rossmartin ~/.config Ross-MBP:test rossmartin$ cordova -v 6.0.0 

现在我看到cordova的报告是在6.0.0,可以做离子build设/再次准备。

我认为发生的事情是,Ionic CLI不认为cordova CLI已经安装。 也许有可能在某处Ionic CLI做一个cordova -v并且由于读取~/.config/configstore/update-notifier-cordova.json文件的权限问题而被挂起。

我在Ubuntu上遇到同样的问题。

我需要安装一些依赖项。

首先cordova,与:

 npm install -g cordova 

Android SDK来自http://developer.android.com/sdk/index.html

还有一个Java SDK。

全局卸载(如果需要使用sudo)

 sudo npm uninstall -g ionic sudo npm uninstall -g ionic@beta sudo npm uninstall -g cordova 

修复这样的权限: https : //docs.npmjs.com/getting-started/fixing-npm-permissions

这对我工作:

 sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share} 

重新安装(没有sudo)

 npm install -g ionic npm install -g ionic@beta 

构build过程正在寻找Cordova-lib并找不到它。 这通常是由于您尚未安装Cordoval-CLI导致的

要检查您是否安装了cordova-CLI,请键入$ ionic info检查结果。 如果你看到Cordova CLI:没有安装运行npm install -g cordova@4.2.0 $ ionic info >它应该显示Cordova CLI:4.2.0