貌似是一个bug
stoneChen opened this issue · comments
cloudstone commented
重现问题的代码很简单,通过添加?seajs-debug后缀的url 访问内容为下面代码的html,再开启"加载source文件"模式(那只眼睛),其他设置都关闭,再刷新页面会有很大的几率会报错:
Uncaught TypeError: Cannot read property 'exec' of undefined
<!DOCTYPE html>
<html>
<head>
<title>exec error test</title>
<script charset="utf-8" id="seajsnode"
src="https://a.alipayobjects.com/??seajs/seajs/2.1.1/sea.js,seajs/seajs-style/1.0.2/seajs-style.js,seajs/seajs-log/1.0.0/seajs-log.js"></script>
<script>
seajs.config({
alias: {
"$": "jquery/jquery/1.7.2/jquery",
"seajs-debug": "seajs/seajs-debug/1.1.1/seajs-debug",
"json": "gallery/json/1.0.3/json"
},
preload: [
"json"
]
})
</script>
</head>
<body>
<script>
seajs.use(['$'], function ($) {
})
</script>
</body>
</html>
后来发现与preload有关系,把preload去掉就不会报错了,研究了好几天seajs源码,没弄明白怎么回事.请赐教.谢谢
Yan Sheng commented
试下seajs 2.2.0 的版本, 看下有没修复 https://a.alipayobjects.com/seajs/seajs/2.2.0/sea.js .
cloudstone commented
@lizzie
还是一样报错呢
Army commented
2.3中已经去掉了preload,推荐使用同步script标签方式,debug的时候确实会产生冲突
cloudstone commented
@army8735 谢谢
另外还有个问题,issue在这
seajs/seajs-combo#14
@afc163 艾特过你,不过你还没回复,麻烦一起吧~
cloudstone commented
再补问一句:原来preload的作用只是提前加载一个模块,并没有执行它的factory?是这样吗?