如何使用Assetic for requireJs

时间:2012-05-09 20:01:44

标签: javascript symfony requirejs

我正在尝试在synfony2项目中使用require.js.

这里是主枝文件中的代码:

<script 
        data-main="{{ asset('bundles/web/js/main.js') }}" 
        src="{{ asset('vendor/js/require.js') }}">
</script>

文件vendor/js/require.js已正确加载,但对于文件bundles/web/js/main.js,我收到了消息:

  

未捕获错误:模块加载超时:mainApp.js?201205021855   http://requirejs.org/docs/errors.html#timeout

我正在使用RequireJS 1.0.8。 知道如何解决这个问题吗?谢谢。


如果我查看源页面,它看起来像:

<script 
      data-main="/~myName/myProject/web/bundles/web/js/main.js?101205021855"       
      src="/~myName/myProject/web/vendor/js/require.js?101205021855">
</script>

所以路径是权利,但在javascript控制台上,我收到以下消息:

  

GET   http://localhost/~myName/myProject/web/app_dev.php/main.js?201205021855   404(未找到)

3 个答案:

答案 0 :(得分:2)

添加到@dgabriel响应。您可以使用切片过滤器

来完成
<script 
        data-main="{{ asset('bundles/web/js/main.js') | slice(0, -3) }}" 
        src="{{ asset('vendor/js/require.js') }}">
</script>

答案 1 :(得分:1)

  1. 请务必从资源中删除“.js”文件扩展名。它应该是 data-main =“{{asset('bundles / web / js / main')}}”

  2. 确保您的文件路径正确无误。

  3. 确保main.js中没有javascript错误

答案 2 :(得分:0)

404看起来好像是因为你的应用程序中的其他地方需要'main'而导致它 - 它与你的数据主路径中的路径不匹配。在这种情况下,它很可能是您的baseUrl或路径配置的问题(两者都是告诉RequireJS模块所在位置的不同方法)。在您的示例中,您的baseUrl需要是'/ ~myName / myProject / web / bundles / web / js'。

您可能想尝试使用https://github.com/hearsayit/HearsayRequireJSBundle。它会自动为您处理这些配置细节,并与Assetic很好地集成。