2012-05-09 11 views
4

我想在synfony2项目中使用require.js。如何使用requireic的资产

下面的代码在主树枝文件:

<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我得到的消息:

Uncaught Error: Load timeout for modules: 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 (Not Found)

回答

1
  1. 确保从您的资产中取消'.js'文件扩展名。它应该是 data-main =“{{asset('bundles/web/js/main')}}”

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

  3. 确保没有在main.js

+0

谢谢@dgabriel和m2mdas,我编辑了我的问题添加更多的细节。 – underscore666

2

添加到@dgabriel响应没有JavaScript错误。你可以用切片过滤器做到这一点,

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

感谢@ m2mdas,我编辑了我的问题,添加了更多详细信息。 – underscore666

+0

嗯,你已经启用资产的'asset_version'选项。出现404是因为web目录中的.htaccess将此路径视为路由,而不是文件路径。 –

+0

另外正则表达式替换过滤器在树枝中不可用。你必须创建一个树枝扩展来做到这一点。 –

0

这404看起来像它的到来作为的结果“主”被要求其他地方在您的应用程序 - 它不匹配您的数据的主要路径。在这种情况下,这很可能是您的baseUrl或路径配置的问题(这两者都是通过不同的方法来告诉RequireJS您的模块位于何处)。在你的例子中,你的baseUrl需要是'/〜myName/myProject/web/bundles/web/js'。您可能想尝试使用https://github.com/hearsayit/HearsayRequireJSBundle。它自动为您处理这些配置细节,并与Assetic完美集成。