Are node.js modules need to be wrapped inside the module pattern?

module, node.js

Solution

Variables declared within a module are local to that module. It is safe to omit your enclosing function.

From the Node.js docs:

Variables local to the module will be private, as though the module was wrapped in a function

Problem

To ensure proper isolation, I tend to wrap each node.js module that I write inside a function scope: ``` (function() { var express = require('express'); var jade = require('jade'); var moment = require('moment'); exports.someFunction = function() { // do something }; exports.otherFunction = function() { // do something else }; })(); ``` I've been doing this for some time now, but I have the feeling that node.js' module system is actually doing this for me, or (in other words) that the above code is equivalent to the following code: ``` var express = require('express'); var jade = require('jade'); var moment = require('moment'); exports.someFunction = function() { // do something }; exports.otherFunction = function() { // do something else }; ``` Are the two really equivalent? In particular, I am interested to know whether is the isolation level is the same: are the `express`, `jade` or `moment` variables local to the module? (i.e., I'd like to make sure that they are not defined in the global scope or interfere with any other definition outside of this module).

Original source