Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error while transforming with RN 0.64 and Typescript #43

Open
mppperez opened this issue Mar 30, 2021 · 7 comments
Open

Error while transforming with RN 0.64 and Typescript #43

mppperez opened this issue Mar 30, 2021 · 7 comments

Comments

@mppperez
Copy link
Contributor

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.

@geraintwhite
Copy link

@mppperez is your fork available on npm?

@mppperez
Copy link
Contributor Author

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.

@geraintwhite
Copy link

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.

@AlbertoMeQ
Copy link

@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? ☹️

@geraintwhite
Copy link

This is now the recommended way to do it:

// metro.config.js

module.exports = {
    transformer: {
      minifierPath: require.resolve('metro-minify-terser')
    }
}

@AlbertoMeQ
Copy link

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

@AlbertoMeQ
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants