2012-05-09 12 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完美集成。