Brunch using javascript-obfuscator package

I got this package javascript-obfuscator, installed it via npm install --save.

When I view source of the page it shows up as installed.

But when I try to use it as described in the documentation:

var obfuscationResult = JavaScriptObfuscator.obfuscate(source_code, options);```

it throws error saying:
```Uncaught ReferenceError: __dirname is not defined
    at pjson.js:7```

And that line 7 is this: `var root = path.resolve(__dirname, "..", "..");`

I am so confused of this npm and brunch thing ... have opened so many pages and tried various things but not able to resolve this. 

Any help will be appreciated.

Are you trying to run it in browser or in Node?

hey @andre1sk I am trying it in the browser

are you using const path = require('path')? You need to require path o make use of __dirname.

Hey @ChaseGilliam thanks for responding. I put const path = require('path') above the line var JavaScriptObfuscator = require('javascript-obfuscator'); and still the same error exists.

can you post your whole config?

is only available in Node

2 Likes
exports.config = {
  files: {
    javascripts: {
      joinTo: {
        "js/app.js": /^(web\/static\/vendor)|(js)/
      }
    },
    stylesheets: {
      joinTo: "css/app.css",
      order: {
        after: ["web/static/css/app.css"] // concat app.css last
      }
    },
    templates: {
      joinTo: "js/app.js"
    }
  },

  conventions: {
    assets: /^(web\/static\/assets)/
  },

  // Phoenix paths configuration
  paths: {
    // Dependencies and current project directories to watch
    watched: [
      "web/static",
      "test/static"
    ],

    // Where to compile files to
    public: "priv/static"
  },

  // Configure your plugins
  plugins: {
    babel: {
      // Do not use ES6 compiler in vendor code
      ignore: [/web\/static\/vendor/]
    }
  },

  modules: {
    autoRequire: {
      "js/app.js": ["web/static/js/app"]
    }
  },
  
  npm: {
    enabled: true
  }
};

And what is the contents of your app.js file?

app.js

// Import dependencies
//
// If you no longer want to use a dependency, remember
// to also remove its path from "config.paths.watched".
import "phoenix_html"

Hey @andre1sk pardon me for my ignorance, when you meant to ask that am I trying to run it in the browser or in the node …

To be clear, I am placing the code:
var JavaScriptObfuscator = require('javascript-obfuscator'); var obfuscationResult = JavaScriptObfuscator.obfuscate(source_code, options);
in a posts.js file in the server side under /static/js folder.

It’s meant to be running in Node you are including it in the file that is getting sent to the browser.

2 Likes

Ah yes thats what I am doing.