Or, conversely, everything is loosely coupled and nothing is loosely coupled. This doesn't mean distinguishing between contract and implementation goes out the window. Nor does it mean an application is instantly loosely coupled just by virtue of being a node app.
When a module loads its dependencies via the global require method it binds itself to a particular implementation from a particular location. Where you want to achieve loose coupling between components loading a dependency via require is probably not the way to go. Nevertheless, it is true enough modules can be swapped out simply by replacing the contents of the file. Obviously this would work but isn't particularly compelling.