can-autoplay icon indicating copy to clipboard operation
can-autoplay copied to clipboard

Trying to use this in React project and "Blob" is not defined

Open davidrhoderick opened this issue 4 years ago • 2 comments

Looks like there is a missing dependency "Blob". How do I remedy? I tried installing blob from npm and importing it but it didn't work.

ReferenceError: Blob is not defined
    at eval (webpack-internal:///./packages/interpayments-theme/node_modules/can-autoplay/build/can-autoplay.es.js:6:14)
    at Module../packages/interpayments-theme/node_modules/can-autoplay/build/can-autoplay.es.js (/home/davidrhoderick/Development/interpayments/frontity/build/server.js:5043:1)
    at __webpack_require__ (/home/davidrhoderick/Development/interpayments/frontity/build/server.js:27:30)
    at eval (webpack-internal:///./packages/interpayments-theme/src/components/partials/page-hero.js:10:70)
    at Module../packages/interpayments-theme/src/components/partials/page-hero.js (/home/davidrhoderick/Development/interpayments/frontity/build/server.js:6116:1)
    at __webpack_require__ (/home/davidrhoderick/Development/interpayments/frontity/build/server.js:27:30)
    at eval (webpack-internal:///./packages/interpayments-theme/src/components/home.js:7:77)
    at Module../packages/interpayments-theme/src/components/home.js (/home/davidrhoderick/Development/interpayments/frontity/build/server.js:5900:1)
    at __webpack_require__ (/home/davidrhoderick/Development/interpayments/frontity/build/server.js:27:30)
    at eval (webpack-internal:///./packages/interpayments-theme/src/components/index.js:12:63)

davidrhoderick avatar Jul 14 '20 17:07 davidrhoderick

Are you using it in SSR? Blob is available globally in browsers but not available globally in node. This module probably isn't set up for SSR, currently.

gkatsev avatar Jul 14 '20 19:07 gkatsev

You can use this workaround with Dynamic imports for SSR (tested with Next.js) until PR #38 is merged :slightly_smiling_face:

import('can-autoplay')
  .then(module => module.default.video())
  .then(({ result }) => {
    if (result === true) {
      // Can auto-play
    } else {
      // Can not auto-play
    }
  })

super-bunny avatar May 06 '21 17:05 super-bunny