13

在我的 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)

感谢您的帮助

4

6 回答 6

36

你必须

$cordova platform remove android

$cordova platform add android

因为缺少目录

平台/android/cordova/node_modules/shelljs

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

最近的解决方案

然后在终端中转到您的应用程序

cd platforms/android/cordova
sudo npm install shelljs

它对我很好

于 2014-01-06T12:15:59.347 回答
7

我已经安装了 shelljs:

sudo npm install shelljs -g

但我需要设置 NODE_PATH

export NODE_PATH=/usr/local/lib/node_modules

不知道为什么它丢失了...

于 2014-12-08T16:25:39.677 回答
2

我需要将cordova-android引擎(从3.5.1)更新到3.6.0(因为splashscreen插件需要,这里

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

"dependencies": {
    "q": "^1.2.0",
    "shelljs": "^0.4.0",
    "which": "^1.0.9"
  }
于 2015-03-23T18:37:28.410 回答
0

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

sudo npm install -g cordova gulp
于 2014-06-12T17:17:11.810 回答
0

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

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

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

$cordova platform remove android

$cordova platform add android


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

于 2013-12-02T19:59:44.180 回答
0

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

于 2014-06-16T16:09:49.560 回答