node module.paths confusion
Issue: required node modules do not use my global module.paths even though I add the global path to the array in my main.js application.
//global modules path module.paths.push('C:UsersxuserAppDataRoamingnpm'); // finds ws in global modules path. Works! wsmain=require('ws') // Now load a 3rd party module, which also requires('ws') C = require('cmod.js');
ws=require('ws'); // fails to find global path
q: How do I make sure that module global is also passed on to the require modules. Is there a way to pass it as a parameter or something?
I’m not sure there is a “global” path. The node.js documentation suggests a default
require takes place relative to the file requiring it, and searches for a
node_modules directory up the directory chain. From the docs:
For example, if the file at ‘/home/ry/projects/foo.js’ called require(‘bar.js’), then node would look in the following locations, in this order:
It looks like you can use
NODE_PATH env var to give a list of places to look for modules:
Based on the documentation, the following might work:
NODE_PATH=/path/to/node_modules/where/ws/lives node mymain.js