卖坚果的怪叔叔 卖坚果的怪叔叔
  • 首页
  • 闲言碎语
  • 技术
  • 生活
  • 记录
  • 朋友
  • 热点新闻
  • 常用代码
  • 工具箱
  • 关于
首页 › 技术 › Nuxt中服务端请求无法获取LocalStorage和Cookie的解决办法!

Nuxt中服务端请求无法获取LocalStorage和Cookie的解决办法!

坚果大叔
2021-09-03 17:12:27技术阅读 3,697

解决办法

在plugins中新建localStorage.js文件,内容如下:

import createPersistedState from 'vuex-persistedstate';
import * as Cookies from "js-cookie";

let cookieStorage = {
  getItem: function (key) {
    return Cookies.getJSON(key);
  },
  setItem: function (key, value) {
    let obj = {}
    if (value.loginState) {
      obj = {
        token: value.token,
        shopId: value.shopId,
        loginState: value.loginState
      }
    } else {
      obj = {
        token: '',
        shopId: '',
        loginState: false
      }
    }

    return Cookies.set(key, obj, {
      expires: 3,
      secure: false
    });
  },
  removeItem: function (key) {
    return Cookies.remove(key);
  }
};
export default (context) => {
  createPersistedState({
    storage: cookieStorage,
    getState: cookieStorage.getItem,
    setState: cookieStorage.setItem,
    removeState: cookieStorage.removeItem,
  })(context.store);

};

使用方法

在nuxt.config.js中设置

plugins: [
    { src: '~/plugins/localStorage.js', ssr: false }
],

定义好以上方法后,我们在获取到vuex数据的时候就会调用对应的getItem 和 setItem方法,将vuex的内容写入到cookie中。

那我们就可以通过在asyncData中 app 默认值中获取到cookie中写入的数据。

async asyncData({ app, route, context, store }) {
    let token = "";
    let shopId = "";

    if (
      app &&
      app.context &&
      app.context.req &&
      app.context.req.headers &&
      app.context.req.headers.cookie
    ) {
      let arrCookie = app.context.req.headers.cookie.split(";");
      let cookie = arrCookie.find(item => item.split("=")[0] === " vuex");
      if (cookie) {
        if (cookie.split("=")[1] != "") {
          let cookieData = JSON.parse(
            decodeURIComponent(cookie ? cookie.split("=")[1] : "")
          );
          token = cookieData.token;
          shopId = cookieData.shopId;
        }
      }
    }
}
Nuxt
赞赏 赞(0)
本文系作者 @坚果大叔 原创发布在 卖坚果的怪叔叔。未经许可,禁止转载。
生活就是每一帧每一秒
上一篇
又是周六的一天。
下一篇
在小程序中查看

这是个😊,挣点服务器费用😜

搜你想看的
聚合文章
Holiday end~~
镜头下的一点记录!
ES6入门之Set 和 Map
撤回?你就以为我不到了嘛?
闲言碎语
Memos
我用Trae做了一个一键同步热点要闻到公众号的工具
2025-10-15 19:53:39
373 0 0
使用uview-plus遇到的一些问题!
2025-09-19 20:21:59
1,184 0 1
Nuxt3中的水合是什么?以及使用中的一些总结!
2025-08-30 19:42:35
1,470 0 0
Element Plus Upload 添加支持拖拽排序~
2025-07-30 20:55:55
1,167 1 0
  • 0
博主

一位佛系的前端开发者,略通摄影,乐于尝试新事物,热衷于美食。

友链
故事胶片
公众号
坚果大叔 执行上下文 卖坚果的怪叔叔 Dacking
Copyright © 2017-2025 卖坚果的怪叔叔

开往-友链接力

萌ICP备20230818号

苏ICP备18048410号-3
  • 首页
  • 闲言碎语
  • 技术
  • 生活
  • 记录
  • 朋友
  • 热点新闻
  • 常用代码
  • 工具箱
  • 关于
# CSS # # JavaScript # # vue # # 微信 # # 生活 #
坚果大叔
330
文章
139
评论
401
喜欢