4

我正在尝试在 Android 平台中使用 Phonegap/Cordova 构建一个混合移动应用程序。我也成功了 :) 该应用程序在我的 Chrome 浏览器中的 Ripple 模拟器中按需要运行。我没有使用 Ecipe ADT 或 Android Studio,因为模拟器无法快速加载。

我使用 onDeviceReady 事件和 Navigator 插件进行振动和警报。所有这些都按预期工作。

当开发人员控制台在 Chrome 中处于活动状态时,JavaScript 在 cordova.js 中中断并出现以下错误

Uncaught ReferenceError: require is not defined 

在下一行。notification.js 文件也是如此。当我在调试器中按继续时,除了该错误之外,一切都按预期工作。

var cordova_events = require('./src/events'),

java脚本文件的顺序如下。

<script src="js/cordova.js"></script>
<script src="js/notification.js"></script>               
<script src="js/vibration.js"></script> 

我相信我没有引用正确的 cordova.js 文件和所有其他依赖项。但我也想知道当开发人员控制台不活动时,该应用程序如何在 Ripple 中正常工作。

我什至尝试删除 cordova.js 文件,因为 Ripple 根据phonegap deviceready 事件自动包含它 - 波纹模拟器

我从他们各自的站点下载了 phonegap 和 cordova 的副本。我已经安装了 Node.js 并且也安装了软件包。

我的问题是:

  • 在哪里可以找到正确的 cordova.js 文件?哪个是要包含在我的 html 文件项目中的正确版本?
  • 这里的 Node.js 用户是什么?
  • 它是否旨在自动包含基于 Node.js 的脚本?如果是这样,我错过了什么?

我承认 node.js 的概念和用法对我来说就像一门火箭科学。

4

2 回答 2

6

不要使用插件源之外的插件 *.js 文件。

不要将插件 *.js 文件作为标签添加到您的 html 中
(Cordova 基于 cordova_plugins.js 自行加载它们)

特定错误“未定义要求”来自 plugins.js 中缺少科尔多瓦定义

cordova.define("org.apache.cordova.file.DirectoryEntry", function(require, exports, module) {

});

为了避免所有这些麻烦:

使用cordova 命令行界面来设置平台和插件。它管理所有本机和 javascript 源文件,并以适当的方式将它们组合在一起。

于 2014-03-21T10:48:32.240 回答
3

Cordova 和 Phonegap 几乎是一回事,您不需要同时下载两者。Cordova 是一个开源项目,可帮助您将 HTML5 应用程序发布到多个不同的移动操作系统。Phonegap 使用 Cordova 来做到这一点,但还添加了一些额外的功能,主要是能够在云中而不是在您的工作站上构建。

Cordova 将 Node.js 用于许多构建步骤。由于 Cordova 在 OSX 和 Windows 机器上工作,我们需要一种方法来编写可以在这两种操作系统上工作的构建和打包脚本 - node.js 提供了这一点。当您使用 Cordova 构建应用程序时,您根本不应该真正使用 node.js,除非您还构建了一个互补的后端系统。

从 Cordova 3.x 开始,有一个cordova命令行工具可以极大地帮助您创建应用程序。它负责复制正确的 cordova.js 和 cordova-android.jar 文件。你可以在这里阅读http://cordova.apache.org/docs/en/edge/guide_cli_index.md.html#The%20Command-line%20Interface

设置好后,您可能想阅读我的其他答案,该答案阐明了cordova工具的一些用例:是否应该在 config.xml 文件中声明 phonegap 插件?

于 2013-11-06T18:16:15.213 回答