PhoneGap - 构建phonegap android app在Linux上出现编译错误

时间:2013-10-25 14:33:44

标签: android linux node.js cordova

我在linux(ubuntu 12.04)机器上构建phonegap android应用程序时遇到错误。 我已经安装了nodejs,将JAVA_HOME,ANT_HOME,ANDROID_HOME变量和$ JAVA_HOME / bin,$ ANT_HOME / bin,$ ANDROID_HOME / tools,$ ANDROID_HOME / platform-tools设置为路径。当我运行命令phonegap local build android时,我收到以下错误:

ME@My-PC:/dos/PhoneGap/HelloWorld$ phonegap local run android 
[phonegap] compiling Android...
    [error] An error occurred while building the android project. 
module.js:340
    throw err;
          ^
Error: Cannot find module 'shelljs'
    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> (/dos/PhoneGap/HelloWorld/platforms/android/cordova/lib/build.js:22:15)
    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)

感谢帮助

6 个答案:

答案 0 :(得分:36)

你必须

$cordova platform remove android

$cordova platform add android

因为

中缺少目录

平台/机器人/科尔多瓦/ node_modules / shelljs

或者您可以创建另一个应用并复制丢失的文件并将其添加到您的应用中

最近的解决方案

终端中的

转到您的应用 然后

cd platforms/android/cordova
sudo npm install shelljs

它和我一起工作

答案 1 :(得分:7)

我已经安装了shelljs:

sudo npm install shelljs -g

但我需要设置NODE_PATH

export NODE_PATH=/usr/local/lib/node_modules

不确定为什么会遗漏......

答案 2 :(得分:2)

我需要将 cordova-android 引擎(从3.5.1更新)更新到3.6.0(因为启动画面插件需要here

要构建Android项目(并逐出上述错误),我已在({1}}文件(我的Cordova项目根文件夹)中添加了以下 npm 依赖项:

package.json

答案 3 :(得分:0)

我在OS X 10.9上为我的phonegap android应用程序收到完全相同的错误消息。问题是我错误地设置了JAVA_HOME变量。一旦它是正确的,我需要删除并添加在cordova中的Android平台。这可能是你的问题,所以这就是我修复它的方法:

在我的.zshrc文件中添加了行export JAVA_HOME=$(/usr/libexec/java_home)

最后我不得不删除平台并再次添加它,以便cordova正确使用java。

$ cordova platform remove android

$ cordova platform add android


注意:在排除故障时,我安装了JDK,这可能是必要的。

答案 4 :(得分:0)

我建议您确保运行所需的lib:

sudo npm install -g cordova gulp

答案 5 :(得分:0)

问题在于目录和用户权限。我在主目录中创建了该项目,它正在运行。