You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中使用LocalStorage?求代码修复方案

修复后的LocalStorage工具函数
// 复用window存在性检查逻辑
const isBrowser = () => typeof window !== "undefined";

const getItemFromLocalStorage = (key) => {
  if (!isBrowser()) {
    console.log("无法在服务端调用localStorage getItem方法");
    return null;
  }
  
  try {
    const storedValue = window.localStorage.getItem(key);
    return storedValue ? JSON.parse(storedValue) : null;
  } catch (error) {
    console.error(`解析localStorage中key为${key}的值失败:`, error);
    return null;
  }
};

const setItemToLocalStorage = (key, value) => {
  if (!isBrowser()) {
    console.log("无法在服务端调用localStorage setItem方法");
    return;
  }
  
  try {
    const stringifiedValue = JSON.stringify(value);
    window.localStorage.setItem(key, stringifiedValue);
  } catch (error) {
    console.error(`往localStorage中设置key为${key}的值失败:`, error);
  }
};

const removeItemFromLocalStorage = (key) => {
  if (!isBrowser()) {
    console.log("无法在服务端调用localStorage removeItem方法");
    return;
  }
  
  window.localStorage.removeItem(key);
};

const clearLocalStorage = () => {
  if (!isBrowser()) {
    console.log("无法在服务端调用localStorage clear方法");
    return;
  }
  
  window.localStorage.clear();
};

关键修改说明

  • 复用检查逻辑:提取isBrowser函数,避免重复编写typeof window !== "undefined",提升代码可维护性
  • 修复setItem存储问题:原代码直接存储原始value,若value是对象/数组会被转为[object Object]字符串,现在通过JSON.stringify统一处理所有类型的值
  • 优化getItem读取效率:原代码两次调用localStorage.getItem(key),现在只读取一次并缓存结果,减少不必要的存储IO
  • 增加错误处理:给JSON.parse和JSON.stringify添加try-catch,避免因存储内容格式错误或循环引用等问题导致程序崩溃
  • 统一提示文案:将服务端提示信息简化并保持一致,提升可读性

内容的提问来源于stack exchange,提问作者Narayan Maity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:22:05