【问题标题】:Ionic cannot add android platformIonic 无法添加安卓平台
【发布时间】:2015-01-11 09:34:32
【问题描述】:

我正在尝试使用以下命令添加 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 重新安装cordova,然后是sudo npm -g install cordova

我已检查npmcordovaionic 是否已全局安装。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      签入目录

      /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
      

      目录。如果你切换到这个目录然后交互式运行 node 你可以运行然后运行命令:

      require('which')

      如果失败运行:

      module.paths

      这将打印出该节点用于尝试查找哪个模块的路径。应该有一个条目

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

      这是which 模块所在的位置。

      【讨论】:

      • 看起来which 存在于3.6.4/package/bin/node_modules/ 目录中。我正在考虑运行ionic platform rm android 命令,但我担心无法重新添加平台,因为这首先是我的问题。
      • 在上面的答案中添加了更多内容。它可能会给你一些关于哪里出了问题的线索。
      猜你喜欢
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 2017-12-31
      • 2014-01-12
      • 1970-01-01
      相关资源
      最近更新 更多