Skip to content

Error while transforming with RN 0.64 and Typescript #43

Open

Description

@mppperez

Just updated to new React Native version and it's broken again.

Output:

error app/sampleFile.ts: function (prevType) {
  this.state.exprAllowed = false;

  if (prevType === types._let || prevType === types._c...<omitted>...
} could not be cloned.
Error: function (prevType) {
  this.state.exprAllowed = false;

  if (prevType === types._let || prevType === types._c...<omitted>...
} could not be cloned.
    at Object.serialize (v8.js:202:7)
    at _default (/home/sample/app/node_modules/metro-transform-worker/node_modules/@babel/core/lib/transformation/util/clone-deep.js:18:30)
    at normalizeFile (/home/sample/app/node_modules/metro-transform-worker/node_modules/@babel/core/lib/transformation/normalize-file.js:52:36)
    at normalizeFile.next (<anonymous>)
    at run (/home/sample/app/node_modules/metro-transform-worker/node_modules/@babel/core/lib/transformation/index.js:31:50)
    at run.next (<anonymous>)
    at /home/sample/app/node_modules/metro-transform-worker/node_modules/@babel/core/lib/transform-ast.js:20:41
    at Generator.next (<anonymous>)
    at evaluateSync (/home/sample/app/node_modules/gensync/index.js:251:28)

Already updated my fork appropriately and it works with updated dependencies (+ necessary code changes). PR will be created soon.

Activity

  1. geraintwhite commented on Jul 20, 2021

    @geraintwhite

    @mppperez is your fork available on npm?

  2. mppperez commented on Aug 12, 2021

    @mppperez
    ContributorAuthor

    Unfortunately not. You will have to include it manually if you want to use it. I guess with our next release we will drop this dependency as well and will check out the solution of directly use javascript-obfuscator.

    We've got Hermes enabled (this should generate bytecode rather than JS) but we still have the JS files that need obfuscating... this may be already the solution even for others. I guess our configuration is just not completed yet.

  3. geraintwhite commented on Aug 12, 2021

    @geraintwhite

    I ended up publishing your fork to a private npm registry and it works well alongside Hermes. A solution using javascript-obfuscator directly would be interesting.

  4. AlbertoMeQ commented on Mar 28, 2023

    @AlbertoMeQ

    @mppperez @grit96 How did you manage to get hermes working with the obfuscator?
    Either I obfuscate or I use hermes, I cannot get both to work.

    More specifically, the obfuscator seems to work but then hermes recreates its own android.bundle without the obfuscation.

    When I disassemble the bundle I get all the original code back. Any tips? ☹️

  5. geraintwhite commented on Mar 29, 2023

    @geraintwhite

    This is now the recommended way to do it:

    // metro.config.js
    
    module.exports = {
        transformer: {
          minifierPath: require.resolve('metro-minify-terser')
        }
    }
  6. AlbertoMeQ commented on Mar 29, 2023

    @AlbertoMeQ

    @grit96 Thanks! I will try. One question: is it possible to plug in the javascript obfuscator there?

  7. AlbertoMeQ commented on Mar 29, 2023

    @AlbertoMeQ

    As an update, that still doesn't seem to minify my bundle. I am using hermes and this command to make a build:

    react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res && rm -rf android/build/ && rm -rf android/app/build/ && rm -rf android/app/src/main/res/drawable* && mkdir -p android/app/build/intermediates/assets/release/ && cd android && ./gradlew assembleRelease && cd .."
    

    But the index.android.bundle is still not obfuscated (I still get lots of "Original Name: xxx" which contains the original function names.)

    Thoughts?
    I have a feeling something is undoing the obfuscation step.

  8. geroale commented on Dec 23, 2024

    @geroale

    Same issue here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions