7

编辑:使用 ionic 2 时会发生这种情况。我知道它还不稳定,但我认为可能会有一些解决方法,因为其他人似乎没有遇到这个问题。编辑结束

出于某种原因,我在尝试使用“ionic build android”和“ionic build ios”构建我的 ionic 应用程序时突然开始出现此错误:

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)

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

有没有人以前见过这个,并且可以指出我正确的方向?

4

4 回答 4

6

@mabs @mgcdanny

我很确定我已经找到了问题的根本原因。我跑了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

现在我看到科尔多瓦报告它在 6.0.0 并且可以再次进行离子构建/准备。

我认为发生的事情是 Ionic CLI 认为没有安装 cordova CLI。也许 Ionic CLI 可能在某个地方执行了操作,并且由于读取文件cordova -v的权限问题而被挂断。~/.config/configstore/update-notifier-cordova.json

于 2016-02-26T16:24:45.970 回答
5

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

我需要安装一些依赖项。

首先是科尔多瓦,有:

npm install -g cordova

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

和一个 Java SDK。

于 2016-01-25T13:32:43.447 回答
3

全局卸载(如果需要,使用 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
于 2016-01-26T23:41:02.353 回答
0

构建过程正在寻找 Cordova-lib,但找不到它。这通常是因为您没有安装 Cordoval-CLI

要检查您是否安装了 cordova-CLI,请键入$ ionic info Check the result。如果您看到Cordova CLI: Not installed run npm install -g cordova@4.2.0 $ ionic info > 它应该显示 Cordova CLI: 4.2.0

于 2016-03-08T17:44:47.053 回答