我正在尝试使用Android平台中的Phonegap / Cordova构建混合移动应用程序。而且我也成功了:)该应用程序在我的Chrome浏览器中按照Ripple模拟器的需要运行。我没有使用Eclipe ADT或Android Studio,因为模拟器无法快速加载。
我使用onDeviceReady事件和Navigator插件进行振动和警报。所有这些都按预期工作正常。
当开发者控制台在Chrome中处于活动状态时,JavaScript会在cordova.js中断,并显示以下错误
Uncaught ReferenceError: require is not defined
在以下行中。对于notification.js文件也是如此。当我在调试器中按下continue时,除了该错误之外,所有内容都会按预期再次运行。
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 event - ripple emulator自动包含它
我有来自各自网站的phonegap和cordova的下载副本。我已经安装了Node.js并安装了软件包。
我的问题是:
我承认node.js的概念和用法对我来说看起来像火箭科学。
答案 0 :(得分:6)
请勿使用插件来源的插件* .js文件。
不要将插件* .js文件作为标记添加到您的HTML 中 (Cordova基于cordova_plugins.js自行加载它们)
特定错误&#39;要求未定义&#39;来自于plugins.js中缺少的cordova定义
cordova.define("org.apache.cordova.file.DirectoryEntry", function(require, exports, module) {
});
避免所有这些麻烦:
使用cordova command line interface设置平台和插件。它管理所有本机和javascript源文件,并以正确的方式将它们组合在一起。
答案 1 :(得分: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
工具的一些用例:Should a phonegap plugin be declared in the config.xml file?