Tengo este error con las cookies en mi código, pero no creo que sea un error tipográfico.
TypeError: no se pueden leer las propiedades de undefined (leyendo 'signedCookies')
// auth.js import axios from 'axios' axios.defaults.withCredentials = true export const getServerSideToken = (req) => { const { signedCookies = {} } = req if (!signedCookies) { return {} } else if (!signedCookies.token) { return {} } return { user: signedCookies.token } } const WINDOW_USER_SCRIPT_VARIABLE = '__USER__' export const getUserScript = (user) => { return `${WINDOW_USER_SCRIPT_VARIABLE} = ${JSON.stringify(user)}` } export const loginUser = async (email, password) => { const { data } = await axios.post('/api/login', { email, password }) if (typeof window !== 'undefined') { window[WINDOW_USER_SCRIPT_VARIABLE] = data || {} } } export const getUserProfile = async () => { const { data } = await axios.get('/api/profile') return data }El error parece estar aquí y no sé por qué.
> 6 | const { signedCookies = {} } = req | ^ 7 | 8 | if (!signedCookies) { 9 | return {}Uso este archivo auth.js en un archivo _document.js:
//_document.js import Document, { Head, Main, NextScript } from 'next/document' import { getServerSideToken, getUserScript } from '../lib/auth' export default class MyDocument extends Document { static async getInitialProps(ctx) { const props = await Document.getInitialProps(ctx) const userData = await getServerSideToken(ctx.req) return { ...props, ...userData } } render() { const { user = {} } = this.props return ( <html> <Head /> <body> <Main /> <script dangerouslySetInnerHTML={{ __html: getUserScript(user) }} /> <NextScript /> </body> </html> ) } }Gracias por adelantado !
También recibí este error cuando estaba en un video tutorial para la página del documento personalizado en next.js.
Y pude evitar el error usando el parámetro req directamente en getServerSideToken como se muestra a continuación:
export const getServerSideToken = req => { if (!req) { return {}; } else if (!req.token) { return {}; } return { user: req.token } }Esto conduce a una página de resultados esperados sin error, pero publicaré una respuesta adicional cuando tenga una solución más fundamental.
Espero que esto sea útil para usted.