11

ほぼ同一のrequire.js構成呼び出しが異なる動作をするように見えるという問題があります。ある場合には、との設定baseUrlに失敗しpathます。

フォルダ構造

 - /js
 - - app/
 - - libs/
 - - - hogan.js
 - - - backbone
 - - - - backbone.js
 - - - - etc.
 - - - boostrap
 - - - jquery
 - - - - jquery.js
 - - - - etc.
 - - - require
 - - - - require.js
 - - - - etc.
 - - templates/
 - - require.config.js

スクリプトタグ

<script data-main="/resources/js/require.config" src="/resources/js/libs/require/require.js"></script>

構成が必要

require.config(
    {
        baseUrl: "/resources/js/libs",
        shim: {
            "underscore": {
                exports: "_"
            },
            "backbone": {
                deps: [
                    "json2",
                    "underscore",
                    "jquery"
                ],
                exports: "Backbone"
            }
        },
        paths: {
            "app": "/resources/js/app",
            "backbone": "backbone/backbone",
            "jquery": "jquery/jquery",
            "templates": "/resources/js/templates",
            "templateEngine": "hogan"
        }
    }
);

require(
    [
        "app/router"
    ],
    function( AppRouter ){
        AppRouter.execute();
    } 
);

どちらの場合も、require.config.jsの完全な内容を示すスクリプトタグが追加されます。

<script type="text/javascript" charset="utf-8" data-requirecontext="_" data-requiremodule="require.config" src="/resources/js/require.config.js">

アプリ/ルーターでの定義

define(
    [
        'backbone',
        'templateEngine'
    ],
// etc
);

ただし、問題が発生した場合、アプリ/ルーターはロードされず、次の場合のみロードされます(404なし、なし)。

GET require.js 200 OK 180ms     
GET require.config.js 200 OK 69ms

Firebugコンソールに入るrequire(["app/router"]);と、次のようになります。

"NetworkError: 404 Not Found - /resources/js/backbone.js
"NetworkError: 404 Not Found - /resources/js/templateEngine.js"

私が期待するのは:

  • /resources/js/libs/backbone/backbone.js
  • /resources/js/libs/hogan.js

試みられた解決策

  • との相対パスと絶対パスのさまざまな組み合わせを使用しようとしましbaseUrlpaths。たとえば、、、baseUrl: libsなどpaths: { "app" : "../app" }
  • 以下を使用する代わりに試しdepsてみました。callbackrequireconfig
  • contextに一致するプロパティを追加しましたbaseUrl
  • require.config.jslibsディレクトリに移動しました(編集baseUrlpathsて必要に応じて、無視されたconfigの同じ問題が発生します。たとえば、代わりに/resources/js/libs/backbone.jsをロードしようとします)。

ノート

このフォルダー構造と構成ファイルはローカルホストで機能します。ここで、上記のようにパスから/resources/を削除します。代わりに、すべての相対パス(/で始まるものはありません)がおよびに使用されbaseUrlますpaths。しかし、実際のサーバーでは、これはオプションではありません。

4

1 に答える 1

5

解決策は、何も持たないことでした。(ピリオド) 構成ファイルのファイル名。ファイルの名前を require-config.js に変更した後、すべてが期待どおりに機能しました。他のファイルは、名前にドットが含まれていても問題ありませんが、メインの構成ファイルだけではありません。

于 2012-08-24T14:34:35.620 に答える