[HMR / Meteor 2.0] page crashes with HMR/react-fast-refresh error

Hi all,

We recently updated to Meteor 2.0 and are enjoying the local development iteration speed benefits of the hot module replacement (HMR) that was recently introduced.

However, one of the pages in our app now seems to crash with an error that seems to come from react fast refresh / hot module replacement. I have pasted the full error below.

error: Blocked a frame with origin "http://localhost:3000" from accessing a cross-origin frame.
react-fast-refresh.js?hash=b6c1b2fb7b85526cb964fb12dbb325c90c3ae990:827 Uncaught (in promise) DOMException: Blocked a frame with origin "http://localhost:3000" from accessing a cross-origin frame.
    at Object.isLikelyComponentType (http://localhost:3000/packages/react-fast-refresh.js?hash=b6c1b2fb7b85526cb964fb12dbb325c90c3ae990:827:26)
    at isReactRefreshBoundary (http://localhost:3000/packages/react-fast-refresh.js?hash=b6c1b2fb7b85526cb964fb12dbb325c90c3ae990:91:20)
    at Object.after (http://localhost:3000/packages/react-fast-refresh.js?hash=b6c1b2fb7b85526cb964fb12dbb325c90c3ae990:134:11)
    at Module.require (http://localhost:3000/packages/modules-runtime-hot.js?hash=d12281259a6cee99786429a66f76b05f13449c7f:274:27)
    at Module.moduleLink [as link] (http://localhost:3000/packages/modules.js?hash=d44ac5a1105c53d0fd450f617e8d4f22f1af4f0f:330:22)
    at module (/node_modules/video.js/dist/video.es.js:9:21)
    at http://localhost:3000/packages/dynamic-import.js?hash=2897a1149caa3c08f86cd16ec170545b0a87d695:143:7
    at fileEvaluate (http://localhost:3000/packages/modules-runtime-hot.js?hash=d12281259a6cee99786429a66f76b05f13449c7f:388:7)
    at Module.require (http://localhost:3000/packages/modules-runtime-hot.js?hash=d12281259a6cee99786429a66f76b05f13449c7f:270:27)
    at Module.moduleLink [as link] (http://localhost:3000/packages/modules.js?hash=d44ac5a1105c53d0fd450f617e8d4f22f1af4f0f:330:22)

The problem goes away when we disable react fast refresh via the following env var: DISABLE_REACT_FAST_REFRESH=true but I’d rather not have to do that so we can keep using HMR.

One other important thing to note is that the page seems to be crashing as a result of including our videojs video player, which we set up as mentioned in the following SO answer: https://stackoverflow.com/a/54837498/1142043

Has anyone else ran into similar issue with HMR / react fast refresh and their react components? Any tips on how we may go about fixing such issues? Thanks.

2 Likes

UPDATE April 19th 2021 I do not have the problem since I upgraded a bunch of dependencies including upgrading Meteor to version 2.2.

Hi @twcfolgar. I am hitting the same wall with the following routes:

Disabling HMR fixes the issue. The production build has no issues. Same problem with HOST=localhost and HOST=127.0.0.1.

On Firefox I get one of two errors:

When I first encounter a problematic route I get this

Uncaught DOMException: Permission denied to access property "$$typeof" on cross-origin object react-fast-refresh.js:827
    isLikelyComponentType react-fast-refresh.js:827
    isReactRefreshBoundary react-fast-refresh.js:91
    after react-fast-refresh.js:134
    require modules-runtime-hot.js:274
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module flattenNames.js:16
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module index.js:16
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module Alpha.js:9
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module index.js:9
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module PickerDialog.js:1
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module ColorPicker.js:64
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module index.js:1
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module AllergyCard.js:112
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module AllergiesList.js:1
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    getNamespace dynamic-import.js:211
    dynamicImport dynamic-import.js:46
    bindEnvironment meteor.js:1234
    (Async: promise callback)
    then promise.js:132
    dynamicImport dynamic-import.js:45
    _c53 Router.js:70
    lazyInitializer modules.js:3094
    mountLazyComponent modules.js:22318
    beginWork modules.js:23711
    beginWork$1 modules.js:28596
    performUnitOfWork modules.js:27432
    workLoopSync modules.js:27363
    renderRootSync modules.js:27326
    performSyncWorkOnRoot modules.js:26949
    performSyncWorkOnRoot self-hosted:1224
    flushSyncCallbackQueueImpl modules.js:15983
    unstable_runWithPriority modules.js:31640
    runWithPriority$1 modules.js:15932
    flushSyncCallbackQueueImpl modules.js:15978
    flushSyncCallbackQueue modules.js:15965
    scheduleUpdateOnFiber modules.js:26549
    dispatchAction modules.js:20795
    dispatchAction self-hosted:1281
    computation useTracker.ts:130
    _compute tracker.js:308
    _recompute tracker.js:324
    _runFlush tracker.js:495
    onGlobalMessage meteor.js:515
    (Async: EventListener.handleEvent)
    addEventListener eval:4
    usePostMessage meteor.js:524
    <anonymous> meteor.js:553

If I switch to another problematic route and do a soft re-render of the route I get this:

Uncaught TypeError: baseGetTag is not a function
    Lodash 4
        isFunction
        baseIsNative
        getNative
        module
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module getSplitLineSegments.js:9
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module SplitLinePath.js:9
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module index.js:9
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module Sex.js:17
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module Stats.js:69
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    getNamespace dynamic-import.js:211
    dynamicImport dynamic-import.js:46
    bindEnvironment meteor.js:1234
    promise callback*module/exports.makeCompatible/Promise.prototype.then promise.js:132
    dynamicImport dynamic-import.js:45
    _c39 Router.js:60
    lazyInitializer modules.js:3094
    mountLazyComponent modules.js:22318
    beginWork modules.js:23711
    beginWork$1 modules.js:28596
    performUnitOfWork modules.js:27432
    workLoopSync modules.js:27363
    renderRootSync modules.js:27326
    performSyncWorkOnRoot modules.js:26949
    flushSyncCallbackQueueImpl modules.js:15983
    unstable_runWithPriority modules.js:31640
    runWithPriority$1 modules.js:15932
    flushSyncCallbackQueueImpl modules.js:15978
    flushSyncCallbackQueue modules.js:15965
    discreteUpdates$1 modules.js:27076
    discreteUpdates modules.js:8412
    dispatchDiscreteEvent modules.js:10545
modules.js:41:23
    Lodash 4
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    require modules-runtime-hot.js:310
    module Lodash
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module getSplitLineSegments.js:9
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module SplitLinePath.js:9
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module index.js:9
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module Sex.js:17
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    module Stats.js:69
    makeModuleFunction dynamic-import.js:143
    fileEvaluate modules-runtime-hot.js:388
    require modules-runtime-hot.js:270
    moduleLink modules.js:320
    getNamespace dynamic-import.js:211
    dynamicImport dynamic-import.js:46
    bindEnvironment meteor.js:1234
    (Async: promise callback)
    then promise.js:132
    dynamicImport dynamic-import.js:45
    _c39 Router.js:60
    lazyInitializer modules.js:3094
    mountLazyComponent modules.js:22318
    beginWork modules.js:23711
    beginWork$1 modules.js:28596
    performUnitOfWork modules.js:27432
    workLoopSync modules.js:27363
    renderRootSync modules.js:27326
    performSyncWorkOnRoot modules.js:26949
    performSyncWorkOnRoot self-hosted:1224
    flushSyncCallbackQueueImpl modules.js:15983
    unstable_runWithPriority modules.js:31640
    runWithPriority$1 modules.js:15932
    flushSyncCallbackQueueImpl modules.js:15978
    flushSyncCallbackQueue modules.js:15965
    discreteUpdates$1 modules.js:27076
    discreteUpdates modules.js:8412
    dispatchDiscreteEvent modules.js:10545
    bind_applyFunctionN self-hosted:1375
    dispatchDiscreteEvent self-hosted:1338

I am having the same problem, on Meteor 2.3.2. In my case the offending line is

import { Line } from 'react-chartjs-2';

When the chart import is removed everything works.