Javascript

localStorage undefined Angular Server Side Rendering

Here’s a pretty quick fix to get localStorage available in your Angular Server-Side Rendering application.

This article assumes you followed the Angular Server-Side Rendering Story: https://github.com/angular/angular-cli/wiki/stories-universal-rendering

Step 1

Install https://github.com/capaj/localstorage-polyfill npm install localstorage-polyfill

Step 2

Add this to your server.ts file:

import 'localstorage-polyfill'

global['localStorage'] = localStorage;

Step 3

Rebuild your project. npm run build:ssr and serve locally as npm run serve:ssr. All localStorage errors should be suppressed now.

Bonus Step

If you have other errors related to document undefined and window undefined, you might wanna try this approach.

Install mock-browser and use it like this:

const MockBrowser = require('mock-browser').mocks.MockBrowser;
const mock = new MockBrowser();

....

global['document'] = mock.getDocument();
global['window'] = mock.getWindow();

You’re good to go!

Conclusion

You don’t have to change ANY part of your actual Angular code. The above approach makes sure localstorage-polyfillis available for global use.

If you’re wondering how to run your SSR (Server Side Rendering) app in production using Nginx, check out this other article I wrote: Serving Angular SSR via Nginx Proxy

Related Articles

Back to top button