webpack-obfuscator icon indicating copy to clipboard operation
webpack-obfuscator copied to clipboard

webpack.config.js - Cannot read property 'emit' of undefined

Open bengrah-miller opened this issue 4 years ago • 4 comments

Hi - I'm not sure if this is the right place to post this but I could use some help.

I'm developing a project using Cordova/Ionic 3, and I'm trying to add the javascript-obfuscator plugin following this guide.

I've installed the javascript-obfuscator package via NPM, I've got a config folder with a copy of webpack.config.js that's being recognised by my project and used. I've added my plugin:

var JavaScriptObfuscator = require('webpack-obfuscator');

And in the plugins section:

  plugins: [
    new Dotenv({
      path: '.env.dev', // load this now instead of the ones in '.env'
      systemvars: true, // load all the predefined 'process.env' variables which will trump anything local per dotenv specs.
      silent: true // hide any errors
    }),
    ionicWebpackFactory.getIonicEnvironmentPlugin(),
    ionicWebpackFactory.getCommonChunksPlugin(),
    new JavaScriptObfuscator({
      stringArrayEncoding: 'base64'
    })
  ],

But when I run the ionic cordova run android command, I get the following output:

PS C:\MobileDev\sd-site-induction> ionic cordova build android
> ionic-app-scripts.cmd build --target cordova --platform android
[15:53:49]  ionic-app-scripts 3.2.4 
[15:53:49]  build dev started ...
[15:53:50]  clean started ...
[15:53:50]  clean finished in 7 ms
[15:53:50]  copy started ...
[15:53:50]  deeplinks started ...
[15:53:50]  deeplinks finished in 451 ms
[15:53:50]  transpile started ...
[15:54:04]  transpile finished in 13.94 s
[15:54:04]  preprocess started ...
[15:54:04]  preprocess finished in 1 ms
[15:54:04]  webpack started ...
[15:54:04]  ionic-app-script task: "build" 
[15:54:04]  TypeError: Cannot read property 'emit' of undefined 
TypeError: Cannot read property 'emit' of undefined
    at WebpackObfuscator.apply (C:\MobileDev\sd-site-induction\node_modules\webpack-obfuscator\dist\index.js:22:24)
    at Compiler.apply (C:\MobileDev\sd-site-induction\node_modules\@ionic\app-scripts\node_modules\tapable\lib\Tapable.js:375:16)
    at webpack (C:\MobileDev\sd-site-induction\node_modules\@ionic\app-scripts\node_modules\webpack\lib\webpack.js:33:19)
    at C:\MobileDev\sd-site-induction\node_modules\@ionic\app-scripts\dist\webpack.js:132:24
    at new Promise (<anonymous>)
    at runWebpackFullBuild (C:\MobileDev\sd-site-induction\node_modules\@ionic\app-scripts\dist\webpack.js:113:12)
    at webpackWorker (C:\MobileDev\sd-site-induction\node_modules\@ionic\app-scripts\dist\webpack.js:70:19)
    at Object.webpack (C:\MobileDev\sd-site-induction\node_modules\@ionic\app-scripts\dist\webpack.js:29:12)
    at bundleWorker (C:\MobileDev\sd-site-induction\node_modules\@ionic\app-scripts\dist\bundle.js:13:22)
    at Object.bundle (C:\MobileDev\sd-site-induction\node_modules\@ionic\app-scripts\dist\bundle.js:6:12)
[ERROR] An error occurred while running subprocess ionic-app-scripts.

Any ideas why this is happening, or what the error means?

Thanks, bengrah

bengrah-miller avatar Jun 23 '20 19:06 bengrah-miller

Hi, I have the exact same problem and I'm following the same guide. Have you found a fix?

FlorinSerban avatar Jul 08 '20 14:07 FlorinSerban

Hi there,

No I haven't managed to find a fix - I think it's likely something to do with the version of Ionic I'm on. I checked out a starter project on the latest Ionic and I could get it to work fine there. Sorry not much help.

bengrah

bengrah-miller avatar Jul 13 '20 06:07 bengrah-miller

I am also using Ionic 3 for my application and facing this issue. Initial debugging results -

  • My webpack version is 3.12.0
  • I was facing similar issue ( Cannot read property 'compilation' of undefined ) with [email protected], then realised its for webpack@5 only
  • Downgraded to [email protected], no getting this error. ( Cannot read property 'emit' of undefined )

So I am assuming this is webpack compatibility issue.

Can someone tell what version of webpack-obfuscator is compatible with [email protected]?

virtualvishwam avatar Jan 18 '21 13:01 virtualvishwam

I am also using Ionic 3 for my application and facing this issue. Initial debugging results -

  • My webpack version is 3.12.0
  • I was facing similar issue ( Cannot read property 'compilation' of undefined ) with [email protected], then realised its for webpack@5 only
  • Downgraded to [email protected], no getting this error. ( Cannot read property 'emit' of undefined )

So I am assuming this is webpack compatibility issue.

Can someone tell what version of webpack-obfuscator is compatible with [email protected]?

Okay did some more testing. Conclusion - My above theory was correct. It is indeed a versioning issue which is not documented properly in this repository's commit logs.

  • I checked when was webpack@4 was released (3 years back)
  • I verified this article was published 3 years back ( I am following this article )
  • I checked this repository and found [email protected] was released 3 years back

Result - For [email protected] which is being used in Ionic 3, [email protected] works like a charm.

Further work - I was short of time so did not test even higher versions of webpack-obfuscator, someone needs to test that.

@sanex3339 @mauricedoepke to please update the documents to reflect the compatibility of webpack-obfuscator versions with different versions of webpack. This is a great open-source initiative, and I would love that this has proper documentation as well. 😊😊

virtualvishwam avatar Jan 18 '21 14:01 virtualvishwam