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

djh*_*s16 13 linux android 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)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

Moh*_*lah 36

你必须

$cordova platform remove android

$cordova platform add android
Run Code Online (Sandbox Code Playgroud)

因为缺少目录

平台/安卓/科尔多瓦/ node_modules/shelljs

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

最近解决了

在终端然后去你的应用程序

cd platforms/android/cordova
sudo npm install shelljs
Run Code Online (Sandbox Code Playgroud)

它对我很好


PiT*_*ber 7

我已经安装了shelljs:

sudo npm install shelljs -g
Run Code Online (Sandbox Code Playgroud)

但我需要设置NODE_PATH

export NODE_PATH=/usr/local/lib/node_modules
Run Code Online (Sandbox Code Playgroud)

不确定为什么它会丢失......

  • 我收到了"Missing Q module"错误.NODE_PATH不适合我,但追求路径解决了一切.(export PATH = $ PATH:/ usr/local/lib/node_modules) (2认同)

jla*_*sso 0

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

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

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

$cordova platform remove android

$cordova platform add android


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