2015-12-03 34 views
7

编辑:使用离子2时发生这种情况。我知道它还不稳定,但我认为可能会有一些解决这个问题,因为它看起来像其他人不知道这个问题。 编辑结束(Ionic 2)尝试回落到Cordova-lib执行时发生错误:TypeError:无法读取undefined属性'then'

出于某种原因,我突然开始尝试建立我的应用程序离子时,出现此错误,使用“离子构建Android”,也“离子生成IOS”:

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) 

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

有没有人见过这个,并能指出我正确的方向?

+0

你可以把你的代码片段在plunker或堆栈溢出知道你在问什么@larschla –

+0

@Anilkumar这里的问题是,它似乎并没有做我的代码。我每次尝试运行时都会收到此错误 ** ionic build android ** 这对我的应用程序没有影响。看起来整个离子结构都被打破了。 – larschla

+0

我试图重新安装离子和科尔多瓦,没有任何运气。 如果我以管理员身份运行ionic build android(sudo),则可以构建android和ios。然后问题是每次我想对它们做任何事情时,构建的输出都需要chmod/chown。例如。在xcode中打开ios项目。 所以,它似乎是一个权限问题 - 我只是不知道什么文件/文件夹我需要给予正确的premissions。 – larschla

回答

5

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

我需要安装一些依赖项。

首先科尔多瓦,具有:

npm install -g cordova 

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

和Java SDK。

+0

同样在windows上。'npm install -g cordova'为我做了诡计 –

+0

我刚刚得到'throw new TypeError('invalid data');'现在 – Rambatino

3

卸载全球(使用sudo的,如果需要的话)

sudo npm uninstall -g ionic 
sudo npm uninstall -g [email protected] 
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 [email protected] 
+0

谢谢。我在这里做了你所说的,但我仍然遇到同样的问题。同样的错误信息:/ – larschla

+0

我也必须运行:npm install cordova。另外,我有一个权限错误,我用Anand的答案解决了这里:http://stackoverflow.com/questions/33812158/ionic-update-notifier-cordova-json-you-dont-have-access-to-this -file – Dave

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文件的权限问题挂断。

+0

真的有用,谢谢! – Rambatino

+0

相同的配置(埃尔卡皮坦),并在黑暗中超过4小时。它解决了这个问题。谢谢! –

+0

这也是我的修补程序。谢谢! –

0

构建过程正在寻找Cordova-lib并找不到它。 如果您尚未安装Cordoval-CLI

要检查是否安装科尔多瓦-CLI这通常是由于,类型$ ionic info 检查结果。如果你看到科尔多瓦CLI:未安装运行 NPM安装-g [email protected] $ ionic info>它应该显示科尔多瓦CLI:4.2.0

相关问题