如何避免在ReactJS同构应用程序中的服务器上获取错误"localStorage未定义"?

stk*_*flw 11 node.js reactjs isomorphic-javascript

我在webApp中使用localStorage在客户端存储数据.但是,当我试图使应用程序同构时,这会导致一个问题.由于节点不是浏览器环境,因此无法定义"window","localStorage"等对象.如何解决此问题?

TmK*_*KVU 10

您可以通过检查模块是否在以下位置来检查代码是在服务器上还是在客户端上执行'undefined':

var isNode = typeof module !== 'undefined'
Run Code Online (Sandbox Code Playgroud)

然后,您可以继续在客户端执行此代码:

if(!isNode){
   //use the local storage
   var myItem = localStorage.getItem(itemTitle)
}
Run Code Online (Sandbox Code Playgroud)

但是,您应该始终检查是否Storage在使用之前定义,因为并非所有浏览器都支持它:

if(typeof(Storage) !== "undefined"){
   //use the local storage
}
Run Code Online (Sandbox Code Playgroud)