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,
|
||||
'node_modules/react-native-svg/lib/module/utils/fetchData',
|
||||
)]: 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