Akash52/msal-with-nuxt3

Cannot stringify arbitrary non-POJOs PublicClientApplication

Opened this issue · 2 comments

I am getting this error: Cannot stringify arbitrary non-POJOs PublicClientApplication

It's not liking the useState composable being used with something that returns functions and isn't serializable.

Stated in the docs:
Because the data inside useState will be serialized to JSON, it is important that it does not contain anything that cannot be serialized, such as classes, functions or symbols.

How do I get around this?

I fixed it by creating a singleton class of IPublicClientApplication.

In useMSAuth.ts change the line of code with the useState to:
let msalInstance = PublicClientApplicationSingleton.create(msalConfig);

Create a singleton class of IPublicClientApplication like so:
`export class PublicClientApplicationSingleton {
private static _instance: IPublicClientApplication;

public static create(configuration: Configuration) {
    if(PublicClientApplicationSingleton._instance == null) {
        PublicClientApplicationSingleton._instance = new PublicClientApplication(configuration);            
    }
    return PublicClientApplicationSingleton._instance;
}

}`

the singleton class didn't work for me.
You can include ssr: false in your nuxt.config.ts to remove the POJO error.