我正在尝试使用以下命令添加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
我已检查全局安装了npm
,cordova
和ionic
。
答案 0 :(得分:0)
检入目录
/Users/user1/.cordova/lib/npm_cache/cordova-android/3.6.4/package/bin/node_modules/
此目录中应该有三个模块which
,shelljs
和q
。它们是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 \中复制了哪个文件夹 构建成功