Jquery 在Require.js完成配置设置后执行javascript脚本

Jquery 在Require.js完成配置设置后执行javascript脚本,jquery,cordova,requirejs,Jquery,Cordova,Requirejs,我正在创建一个Phonegap应用程序。我正在使用Require.js并实现推送通知。在我的index.html文件中,我有: <script data-main="js/app" src="js/require.js"></script> <script type="text/javascript" src="js/app/index.js"></script> <script type="text/javascript">

我正在创建一个Phonegap应用程序。我正在使用Require.js并实现推送通知。在我的index.html文件中,我有:

<script data-main="js/app" src="js/require.js"></script>

<script type="text/javascript" src="js/app/index.js"></script>
<script type="text/javascript">
    app.initialize();
</script>
我得到一个错误:

Uncaught Error: Script error for: jquery
http://requirejs.org/docs/errors.html#scripterror at file:///android_asset/www/js/require.js:8
Uncaught Error: Load timeout for modules: backbone
http://requirejs.org/docs/errors.html#timeout at file:///android_asset/www/js/require.js:8
我想这是因为index.js被调用,而app.js仍在设置路径等。我需要index.js在app.js完成后执行。我不能使用:

    $(document).ready(function() {
        app.initialize();
    });
因为Jquery是作为模块加载的,所以将抛出一个错误。我也无法将index.js作为模块加载,因为我在另一个SO问题中提到了一个问题


你知道我能做什么吗?

如果你用一个单独的
标签而不是
数据主标签加载主文件,那么你的RequireJS配置将立即运行:

<script src="js/require.js"></script>
<script src="js/app.js"></script>

或者你也可以像下面这样在配置中添加一个顶级字段,
deps:[“js/app”]
,以避免需要第三个
标签。

我在ios上的cordova应用程序也遇到了同样的问题。动态加载失败,出现了相同的错误,尽管我有相同的代码在浏览器上运行良好

我的解决方法是首先通过在data main中定义“app”的shim.deps静态加载模块,因此最初通过require加载模块。随后,当需要模块时,它就可以使用了——这时require([“jquery”])就可以了


虽然我确实想找到问题的根源,但现在我可以继续了。

当我在浏览器中运行时,这实际上是可行的。但是,不知何故,当我在phonegap应用程序中运行时,还有另一个错误(app的脚本错误)…我不熟悉phonegap。关于人们在一起使用Phonegap和RequireJS时通常面临的问题,请参见此。
<script src="js/require.js"></script>
<script src="js/app.js"></script>
<script src="js/require.js"></script>
<script src="js/require-config.js"></script>
<script>
    require(["js/app"]);
</script>