3

shell.js に挿入したオブジェクトにアクセスすることはできません。

サーバーからダウンロードされます。そこにもコンソール出力にもエラーはありません。

コンソールに「mainViewModel」と入力すると、次のようになります。

ReferenceError: mainViewModel is not defined
get stack: function () { [native code] }
message: "mainViewModel is not defined"
set stack: function () { [native code] }
__proto__: Error

アプリ.js:

require(['shell'], function(Shell) {
        var shell = new Shell();
});

シェル.js:

define(['viewmodel/mainViewModel'], function (mainViewModel) {
    return function () {
        // When I am here the mainViewModel does not exist/undefined
    };
});

MainViewModel .js:

define([], function() {
    return function() {

    };
})
4

1 に答える 1

0

プルしているファイルにスクリプトエラーがあると、Require js が null を返すことがあります。以前にこれが発生したのを見たことがありますが、常に } または ; が欠落していることが判明しました。または同様のもの( MainViewModel の最後に ; がないことに気付きましたが、最後にあるので、あまり疑わないので、これらのファイルに余分なコードが含まれているかどうかはわかりませんか?それとも本当に空白ですか)。

スタニスラフがキャッシュについて言及した問題もあります-キャッシュされていて修正すると、キャッシュされた壊れたファイルが再送信されるだけです(開発中にキャッシュを常にクリアすることは良い習慣です笑)。実際には、本番環境でも urlArgs をバージョン番号とともに使用する必要があります。ユーザーがキャッシュをクリアすることは、アップグレード後に一貫して行われるわけではありません...

関数を返すことはすべて問題ありませんが、変数を作成し、関数をそれに割り当ててから変数を返すと、ブレークポイントを取得して後で記憶できる場合、プルダウンされる実際のファイルをデバッグしやすくなります。リフレッシュ。次に、コードがそのファイルにヒットした場合、またはオブジェクト生成でエラーが発生した場合 (私は疑っています)、返されているオブジェクトを確認できます。

少し古いもの...問題を整理したか、今では欲求不満でrequire jsを放棄したと思います:)

于 2013-10-09T13:27:27.883 に答える