如何避免在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