4

我正在尝试在 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(未找到)

4

3 回答 3

2

添加到@dgabriel 响应。您可以使用切片过滤器来做到这一点,

<script 
        data-main="{{ asset('bundles/web/js/main.js') | slice(0, -3) }}" 
        src="{{ asset('vendor/js/require.js') }}">
</script>
于 2012-05-09T21:17:26.357 回答
1
  1. 确保从您的资产中去掉“.js”文件扩展名。它应该是 data-main="{{asset('bundles/web/js/main') }}"

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

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

于 2012-05-09T20:30:49.460 回答
0

404 看起来像是由于应用程序中的其他地方需要“main”而出现的 - 它与您的 data-main 中的路径不匹配。在这种情况下,很可能是您的 baseUrl 或路径配置存在问题(这两种方式都是告诉 RequireJS 您的模块所在位置的不同方式)。在您的示例中,您的 baseUrl 需要是“/~myName/myProject/web/bundles/web/js”。

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

于 2012-06-01T03:24:11.893 回答