Ionic无法添加android平台

时间:2014-11-14 03:31:29

标签: cordova ionic-framework android-sdk-tools

我正在尝试使用以下命令添加android平台

ionic platform add android

我看到以下输出:

Creating android project...

module.js:340
    throw err;
          ^
    Error: Cannot find module 'which'
        at Function.Module._resolveFilename (module.js:338:15)
        at Function.Module._load (module.js:280:25)
        at Module.require (module.js:364:17)
        at require (module.js:380:17)
        at Object.<anonymous> (/Users/user1/.cordova/lib/npm_cache/cordova-android/3.6.4/package/bin/lib/check_reqs.js:27:13)
        at Module._compile (module.js:456:26)
        at Object.Module._extensions..js (module.js:474:10)
        at Module.load (module.js:356:32)
        at Function.Module._load (module.js:312:12)
        at Module.require (module.js:364:17)
    Error: /Users/user1/.cordova/lib/npm_cache/cordova-android/3.6.4/package/bin/create: Command failed with exit code 8
        at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23)
        at ChildProcess.emit (events.js:98:17)
        at maybeClose (child_process.js:756:16)
        at Process.ChildProcess._handle.onexit (child_process.js:823:5)

我已经在我的bash_rc文件中设置了PATH:

export PATH=/Users/user1/android-sdk-macosx/platform-tools:/Users/user1/android-sdk-macosx/tools:$PATH

添加iOS平台很简单;没问题。

我查看了我的Android SDK,一切似乎都是最新的。 我还尝试使用sudo npm -g uinstall cordova然后sudo npm -g install cordova

重新安装cordova

我已检查全局安装了npmcordovaionic

2 个答案:

答案 0 :(得分:0)

检入目录

/Users/user1/.cordova/lib/npm_cache/cordova-android/3.6.4/package/bin/node_modules/

此目录中应该有三个模块whichshelljsq。它们是cordova-android 3.6.4版本的一部分,因此很难理解为什么会丢失它们。如果不存在which,最好删除android平台并重新添加。

ionic platform rm android

发表评论后更新。

我不认为重新安装Android平台会有所作为。它看起来更像是一个特定于您的环境的节点问题。失败的check_reqs脚本从

运行
/Users/user1/.cordova/lib/npm_cache/cordova-android/3.6.4/package/bin/lib

目录。如果更改为此目录,则以交互方式运行节点,然后运行命令:

require('which')

如果失败则运行:

module.paths

将打印出节点用于尝试查找哪个模块的路径。

应该有一个条目
/Users/user1/.cordova/lib/npm_cache/cordova-android/3.6.4/package/bin/node_modules

这是which模块的位置。

答案 1 :(得分:0)

面对同样的问题,发现android \ cordova \ node_modules中没有“which”文件夹及其内容。一旦我从.cordova \ lib \ npm_cache \ cordova-android \ 3.6.4 \ package \ bin \ node_modules \中复制了哪个文件夹 构建成功