首页 > 解决方案 > RequireJS - 看不到页面内部的变量

问题描述

我正在尝试找出为什么在我的新站点中不断出现这些错误:

<script data-main="/2018/v5/js/app" src="/2018/v5/js/lib/require.js" async="true"></script>
<title>Title</title>

<script>window.VARS = {
 thisPage: "home_new",
 temp_set: "luna"
 };
</script>

但是,在某些情况下(而且在某些情况下,我的意思根本不是很多),我收到一个错误:

类型错误:window.VARS 未定义

在此处输入图像描述

我认为问题在于window.VARS设置在正文中的事实(我们使用它来传输与页面相关的参数)。简单地在 DOM 周围移动它会有所帮助吗?IE:

<title>Title</title>

<script>window.VARS = {
 thisPage: "home_new",
 temp_set: "luna"
 };
</script>
<script data-main="/2018/v5/js/app" src="/2018/v5/js/lib/require.js" async="true"></script>

它很难测试,因为我根本无法复制这个问题 - 但我在 Errorception.com(我们用于跟踪外部错误的系统)中看到了错误,所以我知道这是一个问题。如果完全可能的话,我只想修复它。

标签: javascriptrequirejs

解决方案


它应该可以解决您的问题,但在任何情况下,防止这种竞争条件是一种很好的做法:

 window.VARS = window.VARS || {};
 window.VARS.thisPage= "home_new";
 window.VARS.temp_set= "luna"

并在每次尝试对其设置属性时遵循相同的模式。

我刚刚意识到的另一种更简单的方法是defer在页面加载之前执行脚本:

 <script data-main="/2018/v5/js/app" src="/2018/v5/js/lib/require.js" async="true" defer></script>

推荐阅读