Fix Reanimated unresolved imports under webpack
This commit is contained in:
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Replacement for react-native-reanimated's js-reanimated/webUtils.web.js,
|
||||||
|
* wired up via a webpack alias in webpack.config.js.
|
||||||
|
*
|
||||||
|
* The original file declares ES module exports but populates them with bare
|
||||||
|
* CommonJS `require()` calls wrapped in try/catch. Webpack parses the file as
|
||||||
|
* ESM and therefore leaves those `require`s untouched, so in the browser they
|
||||||
|
* throw ReferenceError, the try/catch swallows it, and createReactDOMStyle &
|
||||||
|
* co. stay undefined. That silently disables reanimated's DOM update path and
|
||||||
|
* _updatePropsJS later crashes with "Cannot convert undefined or null to
|
||||||
|
* object" on Object.keys(component.props). Importing the same react-native-web
|
||||||
|
* internals statically fixes the resolution.
|
||||||
|
*/
|
||||||
|
import createReactDOMStyle from 'react-native-web/dist/exports/StyleSheet/compiler/createReactDOMStyle'
|
||||||
|
import {
|
||||||
|
createTextShadowValue,
|
||||||
|
createTransformValue,
|
||||||
|
} from 'react-native-web/dist/exports/StyleSheet/preprocess'
|
||||||
|
|
||||||
|
export {createReactDOMStyle, createTextShadowValue, createTransformValue}
|
||||||
@@ -77,6 +77,18 @@ module.exports = async function (env, argv) {
|
|||||||
__dirname,
|
__dirname,
|
||||||
'node_modules/react-native-svg/lib/module/utils/fetchData',
|
'node_modules/react-native-svg/lib/module/utils/fetchData',
|
||||||
)]: false,
|
)]: false,
|
||||||
|
/*
|
||||||
|
* reanimated's webUtils.web.js mixes ESM exports with bare CommonJS
|
||||||
|
* require() calls in try/catch, which webpack leaves untranspiled - they
|
||||||
|
* throw at runtime and createReactDOMStyle & co. silently stay undefined,
|
||||||
|
* making _updatePropsJS crash on every animated style update. The shim
|
||||||
|
* imports the same react-native-web internals statically. See the shim
|
||||||
|
* file for details.
|
||||||
|
*/
|
||||||
|
[path.join(
|
||||||
|
__dirname,
|
||||||
|
'node_modules/react-native-reanimated/lib/module/ReanimatedModule/js-reanimated/webUtils',
|
||||||
|
)]: path.join(__dirname, 'web/reanimatedWebUtilsShim.js'),
|
||||||
})
|
})
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user