【问题标题】:PhoneGap - Building phonegap android app gives compile error on LinuxPhoneGap - 构建 phonegap android 应用程序会在 Linux 上产生编译错误
【发布时间】:2013-11-04 17:46:23
【问题描述】:

在我的 linux (ubuntu 12.04) 机器上构建 phonegap android 应用程序时出错。 我已经安装了 nodejs,将 JAVA_HOME、ANT_HOME、ANDROID_HOME vars 和 $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)

感谢您的帮助

【问题讨论】:

  • 您是否运行npm install phonegap 来安装所有依赖项,例如shelljs?
  • @MBillau 是的,我已经通过这个命令安装了 phonegap
  • 你试过“$ phonegap build android”吗?当您尝试“$ phonegap local build android”时?
  • @Amit Gupta,我希望它在本地构建。
  • 你的路径是什么?真的是ME@My-PC:/dos/...吗? My-PC 中的连字符可能有问题?我知道之前的空格和连字符存在问题...

标签: android linux node.js cordova


【解决方案1】:

你必须

$cordova platform remove android

$cordova platform add android

因为没有目录

platforms/android/cordova/node_modules/shelljs

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

最近的解决方案

在终端中转到您的应用 那么

cd platforms/android/cordova
sudo npm install shelljs

我觉得很好

【讨论】:

  • 删除platforms/android 目录对我来说不是解决方案
  • @bjunix 好的,您可以在终端中下载 shelljs >>>> 转到您的应用程序,然后 cd 平台/android/cordova >>>>> 然后 sudo npm install shelljs
  • @bjunix 我运行了命令,发现 shelljs 也安装了。但是我运行 npm install -g phonegap (Windows) 时没有用。
  • 因为 .gitignore 中的愚蠢的 node_modules/ 而跑进了这个 pb ...救了我的命,谢谢!
【解决方案2】:

我已经安装了shelljs:

sudo npm install shelljs -g

但我需要设置 NODE_PATH

export NODE_PATH=/usr/local/lib/node_modules

不知道为什么会丢失...

【讨论】:

  • 好伙伴,问题出在 NODE_PATH,它对我有用,谢谢!
  • 我收到“缺少 Q 模块”错误。 NODE_PATH 对我不起作用,但附加到路径解决了所有问题。 (导出 PATH=$PATH:/usr/local/lib/node_modules)
【解决方案3】:

我需要将 cordova-android 引擎(从 3.5.1)更新到 3.6.0(因为闪屏插件需要 here

为了构建 Android 项目(并消除上述错误),我在(我的 Cordova 项目根文件夹的)package.json 文件中添加了以下 npm 依赖项:

"dependencies": {
    "q": "^1.2.0",
    "shelljs": "^0.4.0",
    "which": "^1.0.9"
  }

【讨论】:

  • 我遇到了同样的问题,这就是解决方案,也许这应该是答案。
【解决方案4】:

我在 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,这可能是必要的。

【讨论】:

    【解决方案5】:

    我建议您确保安装所需的库正在运行:

    sudo npm install -g cordova gulp
    

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 2017-09-24
        • 2017-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多