Phonegap/Cordova build android node_modules/q/q.js throw e;

Posted

技术标签:

【中文标题】Phonegap/Cordova build android node_modules/q/q.js throw e;【英文标题】: 【发布时间】:2015-01-03 04:52:17 【问题描述】:

cordova build android 给了我以下错误

node_modules/q/q.js:126 throw e; (*error details)

以前有人问过这个问题,但是关于 PATH 和 ANDROID_HOME 的典型答案对我没有用。

我已将其放入代码 sn-p 以避免 SO 提交问题

export HOME="/Users/rover"
export ANDROID_SDK="$HOME/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk"
export ANDROID_HOME="$ANDROID_SDK/tools"
export ANDROID_PLATFORM_TOOLS="$ANDROID_SDK/platform-tools"
export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$ANDROID_SDK/build-tools:$PATH"
export ANT_HOME="/usr/local/bin/ant"
#export PATH="$PATH:$ANT_HOME/bin"

我的环境变量:

$ 设置 | grep "安卓\|路径"

ANDROID_HOME=/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/tools ANDROID_PLATFORM_TOOLS=/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/platform-tools ANDROID_SDK=/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk PATH=/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/tools:/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/平台工具:/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/build-tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin :/sbin:/opt/X11/bin

$ which ant
/usr/local/bin/ant
$ ls /usr/local/bin/ant
/usr/local/bin/ant

$ cordova --version
4.0.0

$ ant -v
Apache Ant(TM) version 1.9.4

我使用的是 Mac OSX 10.10 (Yosemite),它可能与 Java 8 有问题。这有关系吗?

$ java -版本 java版本“1.8.0_05” Java(TM) SE 运行时环境 (build 1.8.0_05-b13) Java HotSpot(TM) 64 位服务器 VM(内部版本 25.5-b02,混合模式)

$ ant --execdebug
exec "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/bin/java" -classpath "/usr/local/Cellar/ant/1.9.4/libexec/lib/ant-launcher.jar" -Dant.home="/usr/local/Cellar/ant/1.9.4/libexec" -Dant.library.dir="/usr/local/Cellar/ant/1.9.4/libexec/lib" org.apache.tools.ant.launch.Launcher -cp ""

(*error details)

BUILD FAILED
/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/tools/ant/build.xml:653: The following error occurred while executing this line:
/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/tools/ant/build.xml:698: null returned: 1

Total time: 1 second

/Library/WebServer/Documents/Booster/core_ionic_git/platforms/android/cordova/node_modules/q/q.js:126
                    throw e;
                          ^
Error code 1 for command: ant with args: debug,-f,/Library/WebServer/Documents/Booster/core_ionic_git/platforms/android/build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen
Error: /Library/WebServer/Documents/Booster/core_ionic_git/platforms/android/cordova/build: 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)

有解决这个问题的想法吗?

【问题讨论】:

【参考方案1】:

我用头撞墙好几个小时,最终想出了一个简单的解决方案。我进入项目目录,发出两条命令:

cordova platform remove android
cordova platform add android

用“cordova build android”重新编译,效果很好。

我认为科尔多瓦可能想更新一些文件。

===== Ionic 更新 ========

如果您使用的是 ionic 框架,那么这些是您的救援命令:

ionic platform remove android
ionic platform add android

我注意到这通常发生在您中断 (Ctrl-C) 编译过程时。

【讨论】:

谢谢!是的,我的 npm install 也有问题。当我尝试更新cordova项目时,我得到例如shelljs 丢失,并且基本上安装任何东西,npm 都在抱怨未满足的依赖项等......但这是另一个需要寻找的错误 :) 如果你可以重新安装它应该可以工作我认为。我也重新安装了nodejs。 在删除和添加 Android 平台之后,我还注意到了另一件事。输出的 Apk 文件名显然也发生了变化。以前我曾经获得 MyAppName-debug.apk。现在是 CordovaApp-debug.apk。如果您使用 DOS 批处理文件来自动执行该过程,此信息会很有帮助。 我已经安装了离子,但命令没有在我的环境中执行。我应该添加什么路径?即使我添加了所有需要的路径,我也会得到同样的错误。这对我也不起作用。 Cordova 教程和 ionic 教程以及这些所有答案对于这个有趣的q.js:126 问题并没有太大帮助。构建不起作用。但我可以使用 eclipse 并在设备或 emu 上进行测试。 我在评论该行后发现了真正的原因并通过此***.com/a/16631694/413032解决了【参考方案2】:

我注意到您的 ANDROID_HOME 变量可能设置不正确 - 据我所知,它应该设置为 SDK 文件夹的根目录(您将 ANDROID_SDK 设置为),尝试一下(并确保您仍然在你的路径上有 $ANDROID_HOME/tools 和 $ANDROID_HOME/platform-tools)。

【讨论】:

我确实在 Yosemite 下载了 Java 6 for OSX,因为 Eclipse 抱怨它需要它。我会尝试将我的 Java 设置为那个,但如果这是问题所在,这是一个奇怪的错误。 是的,你是对的,我在“q.js:126”错误消息中遇到了类似的错误,但事实证明这是一个非常普遍的错误发生的地方(如果我记得,它调用一些外部程序,在这种情况下我想是蚂蚁)。我可能在另一个问题中找到了解决方案:关闭 Eclipse 并在您的项目文件夹中运行 ant clean。 ***.com/questions/23753320/… ant clean 给出:Buildfile:build.xml 不存在!我项目中唯一的 build.xml 与 facebookconnect 插件有关。还有其他想法吗? 对,对不起——你需要(从你的项目根目录)进入platforms/android,build.xml应该在那里。如果不是,或者您无法清理它,那么您可能想尝试使用 Java 6 或 7 重新创建项目。此外,我注意到您的 ANDROID_HOME 变量可能设置不正确 - 据我所知,它应该设置为您的 SDK 文件夹的根目录(您将 ANDROID_SDK 设置为),尝试一下(并确保您的路径上仍然有 $ANDROID_HOME/tools 和 $ANDROID_HOME/platform-tools) 修复了,正如您所说,更改为 ANDROID_HOME=/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk 解决了 new 的问题 项目。我的另一个带有 facebook 插件(以及它自己的 ant 或其他东西)的项目仍然无法正常工作,但这是另一个问题。您要回答以便我将其设置为解决方案吗?【参考方案3】:

我遇到了同样的问题,并通过转义config.xml 中的非字母字符来解决它。特别是name 属性:

<name>Temps d'espera</name>

我改成:

<name>Temps d\'espera</name>

然后它完美运行。希望对您有所帮助。

【讨论】:

无论我安装了什么构建工具,这一直是我的问题。【参考方案4】:

@mylord 我有类似的错误,这是由于调试证书无效。在 Linux 上删除 ~/.android debug.keystore 文件。

下次构建时,构建工具将重新生成新的密钥库和调试密钥。

这为我解决了。我希望这会有所帮助。

【讨论】:

我移动了那个文件并运行:cordova build android.同样的错误仍然存​​在。此外,没有生成其他 debug.keystore。无论如何+1寻求帮助。还有其他想法吗?【参考方案5】:

我在运行“phonegap serve”时遇到了同样的问题,但解决方案非常不同。我注意到当我重新启动计算机时该操作会起作用。以防其他人遇到这个问题。这是 Ubuntu 15 上的解决方案

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

取自***线程Grunt watch error - Waiting...Fatal error: watch ENOSPC

除了海报错误,我还有错误

at exports._errnoException (util.js:856:11)
at FSWatcher.start (fs.js:1313:19)
at Object.fs.watch (fs.js:1341:11)

进一步向下。

【讨论】:

【参考方案6】:

我遇到同样的错误信息,但我的 ANDROID_HOME 设置是正确的。 我发现错误是由于我在 \platforms\android\ant-build 文件夹中打开一个 .apk 文件引起的。关闭占用.apk文件的7zip后,ant build通过了。

【讨论】:

【参考方案7】:

在更改任何内容之前,创建一个空的 cordova 项目并尝试构建它,您可以确定问题是否与项目相关。

在我做了很多改变之后,我发现我们不应该有两个同名的文件夹:jqueryjQuery

【讨论】:

【参考方案8】:

我遇到了同样的问题。这是由于在源自 Google Play 商店(这是我们的 Beta 版本)的 Android 设备上安装了一个具有相同名称(在我的情况下为相同的反向样式域名)的应用程序。

【讨论】:

以上是关于Phonegap/Cordova build android node_modules/q/q.js throw e;的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Phonegap 命令行工具为 iOS 发布 Build?

使用 phonegap / cordova 更改设备配置文件

Phonegap / Cordova 改变个别声音的音量?

Phonegap/Cordova 中的本地通知

基于 Swift 项目的 PhoneGap/Cordova App

PhoneGap/Cordova 设备未准备好