rnx-kit icon indicating copy to clipboard operation
rnx-kit copied to clipboard

Hermes error: Error encoding bytecode

Open yogeshpaliyal opened this issue 9 months ago • 8 comments

What happened?

On hermes command getting the error, without any specific error message.

error: Error encoding bytecode <Printing the whole js bundle>

I am trying to create bundle for React-Native, earlier we were using the metro bundler, but now we want to add tree-shaking capability to it, so we are trying rnx-kit.

Our react native version: 0.72.7

Trying to create bundle independently without gradle.

Affected Package

@rnx-kit/metro-serializer-esbuild

Version

0.1.33

Which platforms are you seeing this issue on?

  • [X] Android
  • [ ] iOS
  • [ ] macOS
  • [ ] Windows

System Information

System:
  OS: macOS 14.4.1
  CPU: (10) arm64 Apple M1 Pro
  Memory: 340.58 MB / 16.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 16.15.1
    path: ~/.nvm/versions/node/v16.15.1/bin/node
  Yarn:
    version: 1.22.19
    path: ~/.nvm/versions/node/v16.15.1/bin/yarn
  npm:
    version: 8.12.1
    path: ~/.nvm/versions/node/v16.15.1/bin/npm
  Watchman: Not Found
Managers:
  CocoaPods:
    version: 1.15.2
    path: /opt/homebrew/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.4
      - iOS 17.4
      - macOS 14.4
      - tvOS 17.4
      - visionOS 1.1
      - watchOS 10.4
  Android SDK: Not Found
IDEs:
  Android Studio: Not Found
  Xcode:
    version: 15.3/15E204a
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 11.0.11
    path: /Users/<username>/.jenv/shims/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.72.7
    wanted: 0.72.7
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: false
  newArchEnabled: false
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found

Steps to Reproduce

babel.config.js

presets: [["module:metro-react-native-babel-preset", { disableImportExportTransform: true }]]

metro.config.js

const { makeMetroConfig } = require('@rnx-kit/metro-config');
const { MetroSerializer, esbuildTransformerConfig } = require('@rnx-kit/metro-serializer-esbuild');

module.exports = makeMetroConfig({
    serializer: {
        customSerializer: MetroSerializer([], {
            logLevel: 'verbose',
            target: 'hermes0.11.0'
        })
    },
    transformer: esbuildTransformerConfig,
});

Note: Tried default target as well.

Using command to create js bundle.

react-native bundle --platform android --dev false --entry-file index.js --bundle-output bundle.js --sourcemap-output bundle.map --reset-cache

Command to run hermes:

node_modules/react-native/sdks/hermesc/osx-bin/hermesc -O -w -g -emit-binary -output-source-map -out bundle.hbc bundle.js

Code of Conduct

  • [X] I agree to follow this project's Code of Conduct

yogeshpaliyal avatar May 14 '24 14:05 yogeshpaliyal