rollbar-react-native icon indicating copy to clipboard operation
rollbar-react-native copied to clipboard

[iOS] Can't produce sourcemap with Hermes

Open taltrui opened this issue 4 years ago • 3 comments

Hi! I can't produce a working sourcemap when building in iOS with Hermes activated.

I've created an issue in react native: https://github.com/facebook/react-native/issues/32497 but I would like to know if someone from Rollbar has some insight in this or a workaround (or something I'm missing).

Thank you!

taltrui avatar Oct 28 '21 18:10 taltrui

Can you post what steps you're following to build your source map? Also, what is the error or problem you're seeing with the source map?

waltjones avatar Oct 28 '21 19:10 waltjones

Hi @waltjones ! Of course:

The sourcemap is generated in an XCode build phase, I've tried a few things:

Without Hermes:

export NODE_BINARY=node
export PROJECT_ROOT="${PROJECT_DIR}/../"
export EXTRA_PACKAGER_ARGS="--sourcemap-output sourcemap.ios.js --entry-file index.js --sourcemap-sources-root ./"

../../../node_modules/react-native/scripts/react-native-xcode.sh index.js

And then making the app crash yields this in Rollbar image

If I activate Hermes and use the same method as above: image

If I change the script to this:

export NODE_BINARY=node
export PROJECT_ROOT="${PROJECT_DIR}/../"
export SOURCEMAP_FILE="${PROJECT_DIR}/../sourcemap.ios.js"
export EXTRA_PACKAGER_ARGS="--entry-file index.js --sourcemap-sources-root ./"

../../../node_modules/react-native/scripts/react-native-xcode.sh index.js

Then the issue I created in react-native repo happens and no sourcemap is created.

taltrui avatar Oct 28 '21 22:10 taltrui

Hi @waltjones, I've tried creating the sourcemap manually for Hermes, like this:

yarn react-native bundle --platform ios --dev false --entry-file index.js --bundle-output main.jsbundle --sourcemap-output main.jsbundle.map --sourcemap-sources-root ./

ios/Pods/hermes-engine/destroot/bin/hermesc -O --emit-binary -output-source-map -out=main.jsbundle.hbc main.jsbundle

node ../../node_modules/react-native/scripts/compose-source-maps.js main.jsbundle.map main.jsbundle.hbc.map -o sourcemap.ios.js

Sourcemap is successfully created, and it seems that Rollbar can make "real" paths, but they are wrong:

image

As you can see in the image, the function name that makes the crash is indeed "crash", but the path "...src/app/screens/Accounts/components/SOSRecharge/index.js" is not the correct one. The correct one would be "...src/app/screens/Auth/flavours/common/index.js".

taltrui avatar Oct 29 '21 15:10 taltrui