2017-05-23 8 views
0

index.htmlファイルの末尾には次のものがあります。それはmain.start()を呼び出す前に終了するのをrequirejsを使用するとJavascriptモジュールが未定義に戻ります

<script src="/resources/js/require.js"></script> 
<script> 
    $(document).ready(function() { 
     require(['main'], function (main) { 
      main.start(); 
     }); 
    }); 
</script> 

これは確かにmain.jsファイルや待機をロードしません。ここで問題が返されるmain変数はモジュールではなく、代わりにundefinedです。ここで

はmain.jsです:

define('/src/main', ['exports', '../screens/loginScreen'], function (exports, _loginScreen) { 
    'use strict'; 

    Object.defineProperty(exports, "__esModule", { 
     value: true 
    }); 
    exports.start = undefined; 

    function main() {}; 

    var start = exports.start = function start() { 
     new _loginScreen.default().open(); 
    }; 
}); 
//# sourceMappingURL=main.js.map 

私はmain.jsファイルの末尾に実際のreturn文を持つ試してみました。私が何を返すかにかかわらず、まだundefinedを与える。

+0

モジュールに何も返されていませんか? –

答えて

0

あなたのコードを試しましたが、同じエラーが発生しました。私が思う問題は、あなたのmain.jsの場所と関係があります。それは、プロジェクトのルートにsrcフォルダにある場合、あなたはこのように、requireにプロジェクトのルートからその相対に合格する必要があります。

require(['src/main'], function (main) { 
    main.start(); 
}); 

をまた、あなたのmain.jsで、使用相対パスだけでなく:

define('src/main', ['exports', '../screens/loginScreen'], function... 
+0

javascriptファイルがrequireによって確実に読み込まれているため、パスに何か問題があることはありません。 – BlindChicken

+0

まあ、 'define'と' require'の両方で '/ src/main'と同じパスを試してみましたか?あるいは、もっと多くのコードを表示して、より多くを助けることができます。本当に私のために働いた相対的なパスを使って= / – fmilani

0

あなたの実際のモジュールに問題はそれだけでundefinedを返しますので、それは、何も返さないということです。あなたが機能であなたのモジュールをラップし、この機能を返す必要が

は、ここにあなたが必要とするものです。

define('/src/main', ['exports', '../screens/loginScreen'], function(exports, _loginScreen) { 
    'use strict'; 

    Object.defineProperty(exports, "__esModule", { 
    value: true 
    }); 

    var Main = function Main() { 

    } 

    Main.start = exports.start = function start() { 
    new _loginScreen.default().open(); 
    }; 

    return new Main(); 
}); 

それとも、あなたのモジュールをしたい場合は、すべてのページで共有し同じインスタンスなるようにしてなりませんreturn new Main();でそのインスタンスを返す代わり

return Main; 

:常にnewキーワードでインスタンス化、あなただけMain機能を返すことができます。

関連する問題