node.jsnpmbrowserify

browserify will not compile express js


I wrote a very basic express.js app. Then tried to make it one .js file. Browserify compiled the whole thing to a one file. But browserify-compiled code didn't work. As far as I know, browserify just replaces require statements with module codes. Error is:

C:\Users\HP\n\express\app.js:27025
  __proto__: http.IncomingMessage.prototype
                                 ^

TypeError: Cannot read property 'prototype' of undefined
    at Object.__dirname.173.accepts (C:\Users\HP\n\express\app.js:27025:34)
    at s (C:\Users\HP\n\express\app.js:1:316)
    at C:\Users\HP\n\express\app.js:1:367
    at Object.__dirname.170../application (C:\Users\HP\n\express\app.js:26823:11)
    at s (C:\Users\HP\n\express\app.js:1:316)
    at C:\Users\HP\n\express\app.js:1:367
    at Object.__dirname.168../lib/express (C:\Users\HP\n\express\app.js:26154:18)
    at s (C:\Users\HP\n\express\app.js:1:316)
    at C:\Users\HP\n\express\app.js:1:367
    at Object.__dirname.153.express (C:\Users\HP\n\express\app.js:24010:15)

Solution

  • Browserify is designed specifically to package code for a browser.

    Node.js supports a number of modules that a browser doesn't which have to be emulated by builtins. These modules will be replaced by a browser-specific shim. Some only supply a subset of the Node API that makes sense to have in a browser.

    So you are running an app that has converted all the Node.js modules to support running what it can in a browser, back in Node where the modules are available but are no longer being used.

    Try rollup or you could possibly configure babel to work like you need