2016-11-21 61 views
1

我一直在使用RequireJS,它的工作原理非常完美。我使用了很多“window.document”来操作不同的DOM元素,但是当我尝试使用r.js进行优化时,我得到的ReferenceError: window is not defined只发生在r.js使用r.js编译时出现“ReferenceError:窗口未定义”

这里是最少的代码示例再现问题:

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

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

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

这个版本可以正常工作而不r.js但是当我试图通过运行r.js main.js编译它。我得到这个:

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


ReferenceError: window is not defined 
     at new new commManager 

回答

1

你不能只是做r.js main.js

首先,您必须指定-o,以便r.js执行优化。 (r.js可用于其他事情。)

您还必须将配置传递到r.js,无论是在文件中还是在命令行中。一种可能性是:

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

我试过这个问题,你在问题中显示的代码,我没有得到任何错误。

我强烈建议您通过查询r.js

相关问题