2016-11-21 12 views
1

私はRequireJSを使用しています。私はさまざまなDOM要素を操作するために多くの "window.document"を使用しますが、r.jsで最適化しようとすると、が発生します。これはr.jsで発生します。ここr.jsでコンパイルすると "ReferenceError:window is not"と表示されます

は、問題を再現するコードの最小の例である:

index.html

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
</head> 
<body > 
<div id="commentbox"> 

</div> 
<script data-main="code/main" src="code/require.js"></script> 
</body> 
</html> 

main.js

require(["roomManager"], function (roomManager){ 
return { 

} 
}); 

roomManager.js

define(["commentManager"], function(commentManager){ 
    var commentHand = new commentManager.commentHand(); 
    commentHand.init(); 


    return{ 

    } 
}); 

commentManager.js:私はr.js main.jsを実行して、それをコンパイルしようとすると、

define([], function(){ 
    function commManager(getDisplayIdVariable){ 
     var messagebox = window.document.getElementById("commentbox"); 

     this.init = function(){ 
      messagebox.innerHTML = "hi!"; 
     } 
    } 
return{ 
     commentHand : commManager 
} 
}); 

このバージョンはr.jsなくても正常に動作しますが。私はこれを得る:

var messagebox = window.document.getElementById("commentbox); 


ReferenceError: window is not defined 
     at new new commManager 

答えて

1

あなたはただr.js main.jsをすることはできません。

r.jsが最適化を実行するように、-oを指定する必要があります。 (r.jsは他のものにも使用できます)

また、設定をファイルまたはコマンドラインでr.jsに渡す必要があります。あなたのための1つの可能性は:

r.js -o name=main out=built.js 

私はあなたの質問に表示されたコードでこれを試しましたが、エラーは発生しません。

r.jsの場合はthis documentationになることを強くお勧めします。

関連する問題