Kikobeats / react-clap-button

A Medium like clap button
https://react-clap-button.netlify.com
120 stars 17 forks source link

SSR not working (next.js) #50

Closed tmaximini closed 4 years ago

tmaximini commented 4 years ago

When trying to use this package with next.js server side renderer, it errors:

window is not defined

ReferenceError: window is not defined
    at Helpers.getPrefix (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:1752:6)
    at Helpers.vars (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:1580:25)
    at new Helpers (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:1575:11)
    at Object.<anonymous> (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:2228:6)
    at __webpack_require__ (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:30:30)
    at Object.<anonymous> (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:72:11)
    at Object.<anonymous> (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:199:31)
    at __webpack_require__ (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:30:30)
    at Object.<anonymous> (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:57:19)
    at __webpack_require__ (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:30:30)
    at /Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:50:18
    at /Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:53:10
    at webpackUniversalModuleDefinition (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:3:20)
    at Object.<anonymous> (/Users/thomas/projects/habit/node_modules/mo-js/build/mo.js:10:3)
    at Module._compile (internal/modules/cjs/loader.js:956:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)

It seems mo-js heavily relies on window and thus is not SSR compatible.

Kikobeats commented 4 years ago

it should be trivial to add SSR, just checking if window is available such as:

const isSSR = window === 'undefined'

Then wrap mo-js in a way to just load it at frontend side.

Can you make a PR? 🙂

tmaximini commented 4 years ago

done :)

Kikobeats commented 4 years ago

published at v1.2.0 🎉