如何避免在ReactJS同构应用程序服务器上出现错误'localStorage未定义'?
我在我的webApp中使用localStorage在客户端存储数据。 但是,当我试图使应用程序同构,这会导致一个问题。 由于节点不是浏览器环境,因此无法定义“window”,“localStorage”等对象。我该如何解决这个问题?
您可以通过检查模块是否为'undefined'
来检查代码是在服务器还是在客户端执行:
var isNode = typeof module !== 'undefined'
然后你可以继续在客户端执行这个代码:
if(!isnode){ //use the local storage }
但是,由于并非所有浏览器都支持,所以在使用之前,您应该始终检查是否已定义Storage
:
if(typeof(Storage) !== "undefined"){ //use the local storage }
标准对这样的问题有特定的支持 。
所有你需要做的是添加一个通知标准的评论,有一个由全局范围提供的variables。
// MyStuff.js /* global localStorage */ // Use localStorage below with no linter errors