e.userData is undefined
Unanswered
Northeast Congo Lion posted this in #help-forum
Northeast Congo LionOP
Weird error occurs when I click a Next.Link element. It says "e.userData not found". userData is a variable used in my middleware and another similar layer that is used elsewhere. It's also used as a prop in a page that shouldn't be relevant as the link leads neither to nor from it.
This error doesn't occur on my local machine, only with the built version when it's deployed. (of course, this is a problem plaguing my Production server). Any idea what might be going on here?
https://i.gyazo.com/1ac10357736e02f1194911da30492bdc.png
https://i.gyazo.com/b295a11a64e5abc99e7d2f6b70860ec1.png
it also goes away when I refresh. So click link -> error-> refresh -> all good
This error doesn't occur on my local machine, only with the built version when it's deployed. (of course, this is a problem plaguing my Production server). Any idea what might be going on here?
https://i.gyazo.com/1ac10357736e02f1194911da30492bdc.png
https://i.gyazo.com/b295a11a64e5abc99e7d2f6b70860ec1.png
it also goes away when I refresh. So click link -> error-> refresh -> all good
52 Replies
Spectacled bear
userdata property of an object, but the property does not exist
Northeast Congo LionOP
Well, why is it being created in my local version and not in the built version?
And why is it fine when I refresh
Spectacled bear
Different server configurations or version?
Barbary Lion
cna yuo give all details as to where and how you are deploying
Northeast Congo LionOP
Sure
Again, not 100% sure what code is causing this problem
so I'll show what I can as far as code
I'm deploying using SST to AWS
Barbary Lion
also you should share all relevant code around userData
Northeast Congo LionOP
Yup hang on am doing so
Spectacled bear
The e.userData not found error is occurring because of a difference in the way that serverless applications are handled by AWS compared to traditional web applications
Northeast Congo LionOP
thanks, chatgpt
if (props.userData.tier != "free" && linksList.length > 4){
linksList = [<Link href="/links" className={styles.primaryButton} key="0">Manage Links</Link>]
newLinkButton = <></>
}
@Barbary Lion this is the most "Suspect code" here
Spectacled bear
What
Northeast Congo LionOP
I say that because this is the only time there's an ".userData" anywhere
Spectacled bear
uhm
Northeast Congo LionOP
But what's weird is that it's erroring every time a Link is clicked, not just the code that's running this page
in a diff part of the code we have this:
let userData = resultVal.split("#")
if (userData.length === 3){
emailVerified = userData[2] === "true"
}
let resultVal:string = ""
if (result.val){
//validate the cookie
validCookie = true
resultVal = result.val as string
}
also have this code
export async function userFromCookies(req:any):Promise<User|null>{
const userData = await verifyAuth(req);
if (!userData) {
console.log("No user data, request: ", req)
return null
}
let userString = userData.val as string;
let userID:number = parseInt(userString.split("#")[1])
let userName = parseInt(userString.split("#")[0])
let prisma = new PrismaClient()
//get user data from the database
let foundUser = await prisma.user.findUnique({
where: {
id: userID
}
})
await prisma.$disconnect()
return foundUser
}
Barbary Lion
in the if statement add to the beginning "props.userData &&", same with teh second block of code below
also check out phind.com it is the best programming chatbot I've used, better than gpt4.
Northeast Congo LionOP
Is it possible to have code from one part/page of your application erroring on a diff page
is SpeedyFriend67 phind.com?
Barbary Lion
nope probably chatgpt 3.5 which sucks
Northeast Congo LionOP
Fair nuff
So I modified some code
the error message changed after a deploy
so now I can narrow it down a little, I think, though there's still another error
it's using "o" now, but similar error
so yeah. Now having 2 issues. Problem 1:
e.userSerialized is undefined (I think this is happening in a react.useState thing)
e.userSerialized is undefined (I think this is happening in a react.useState thing)
Problem 2: Totally unknown location saying "o" is undefined
Barbary Lion
u should disable bundling and minification for production build so u can set breakpoints and read the code in production
Northeast Congo LionOP
That's probably a good idea. Any idea how to do that in SST?
Let me ask in SST
seems to be coming from any case where a props object is used in a react.useState
Northeast Congo LionOP
Yeah this is very weird... props aren't being received at all when navigating with Link
Barbary Lion
you mean a state variable is passed in as a prop?
Northeast Congo LionOP
Hang on, let me give an example
userDataSerialized is passed in via props in this example
let imgWidth = 200
if (props.userDataSerialized){
imgWidth = props.userDataSerialized.imageWidth
}
let [imageWidth, setImageWidth] = React.useState(imgWidth)
this will behave as if imgWidth is 200
there's a property called "authorized" that's handled a similar way
if (!authorized){
return (<>
{genHead("Unauthorized", "You are not authorized to access the controls page.")}
<main className={`${styles.main} ${inter.className}`}>
<h1>You are not authorized to access the controls page.</h1>
</main>
</>)
}
This causes the page to show this message every time unless refresh is used.
Barbary Lion
how is authorized handle in a similar way
Northeast Congo LionOP
const {authorized, id, controllers} = props
basically something about the props is what's going on.
if I were to suspect, it's that
getServerSideProps
is not being called when you click a Linkbut only on built versions for some reason
Northeast Congo LionOP
Fixed.
It's a problem with 13.4 it seems