【问题标题】:How to get cookie on nuxtServerInit function for static website?如何在静态网站的 nuxtServerInit 函数上获取 cookie?
【发布时间】:2019-05-08 14:53:42
【问题描述】:

当我尝试运行 NPM RUN generate 时出现错误,因为我在 nuxtServerInit 中使用 req 来获取 cookie。我该如何解决这个问题?

nuxtServerInit({ commit }, { req }) {       
    let auth = null    
    if(req) {      
      if (req.headers && req.headers.cookie) {
        const parsed = cookieparser.parse(req.headers.cookie)
        try {
          auth = JSON.parse(parsed.auth)
        } catch (err) {
          // No valid cookie found
        }
      } 
    }    
    commit('SET_USER', auth)
  },

【问题讨论】:

    标签: vue.js nuxt.js


    【解决方案1】:

    您不能在静态模式下使用req,因为没有实际请求。

    在静态模式下,nuxtServerInit() 在构建时运行。

    据我所知,您正在尝试创建一个动态应用程序,因此同一页面上的内容对于每个用户都会有所不同。静态页面用于静态网站,例如 nuxtjs.org 文档。

    您需要使用 SPA 或服务器端呈现的应用程序来执行您尝试执行的操作。

    【讨论】:

    • 感谢您的支持,但是,我的项目需要一个静态网站。可以保存令牌并使用静态站点将其取回吗?非常感谢
    • 想一想,你要存储哪个token?
    • 我想在用户登录后存储来自 Cognito 的令牌。
    • @gunter 和我自己提供了所有信息,您无法通过静态网站实现您想要的。
    • 那么,是否可以在静态网站上进行身份验证并使用 Nuxt 保持用户登录?
    【解决方案2】:

    虽然您在请求静态生成的 Nuxt.js 应用时不能使用 nuxtServerInit(),但您可以更改要在应用 mounted() 上调用的函数(例如)。 现在,根据您构建应用的方式,它可能很简单,也可能令人头疼。

    更不用说它会在客户端执行,这是你可能需要重新考虑的事情,但这就是nuxt generate 的本质,制作静态页面,然后其他一切都在客户端上运行

    由于我看到您只是在检查 cookie,因此即使您在挂载而不是服务器初始化中运行它,您也应该能够正常访问它们。

    【讨论】:

      【解决方案3】:

      您应该使用通用模式,而不是静态模式。 这里同样的问题:https://github.com/nuxt/nuxt.js/issues/4066

      【讨论】:

      • 我正在使用通用。我正在尝试使用静态托管服务。
      • 来自问题的消息:“生成非通用模式。生成将生成一次静态页面。nuxtServerInit 在生成期间只会运行一次,不会有任何请求或任何东西。通用模式是当你部署你的节点上的应用程序。例如,npm run build、npm run start"
      • 对不起,我不明白。我需要使用 npm run generate 并获取令牌。我将部署到 AWS 存储桶。我该怎么办?
      • @ZeusAC 不,你不是,如果你正在运行 npm run generate 你没有使用通用
      • 您好,抱歉,请您再解释一下好吗?
      猜你喜欢
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 2018-09-13
      • 1970-01-01
      • 2021-07-05
      • 2022-12-19
      • 1970-01-01
      相关资源
      最近更新 更多