南苑新云 2019-11-12 10:32 采纳率: 0%
浏览 775

Angular7+ 服务端渲染ssr 打包后,出现localStorage is not defined

我将项目打包后,运行npm run serve:ssr,出现报错

ReferenceError: localStorage is not defined
```查询网上的相关资料后,发现是在服务端上并无浏览器的api,由于项目比较复杂,不能将相关代码写在生命周期ngAfterViewInit(): void,请问有什么办法解决?
  • 写回答

1条回答 默认 最新

  • messilion 2023-04-26 16:20
    关注

    在服务端渲染(SSR)中,代码是在服务器端执行的,而不是在浏览器中执行。因此,localStorage 对象在服务器端是不可用的,因为它是浏览器提供的 API。

    解决这个问题的方法是在代码中检查 localStorage 是否可用。可以使用以下代码:

    if (typeof localStorage !== 'undefined') {
      // 在这里使用 localStorage
    }
    

    这将检查 localStorage 是否已定义,如果未定义,则不会使用它。这可以确保你的代码在客户端和服务器端都能正常运行。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊