Also, as far as Windows goes, require does work with absolute paths (I am
using it): that may be a platform inconsistency though - anyone care to
check on a *nix?

Jonathan


On Thu, Dec 27, 2012 at 10:43 AM, Jonathan Chayce Dickinson <
[email protected]> wrote:

> In a nutshell you need to have the .js file in a directory node_modules
> either in the directory that contains the .js that is 'requiring', or a
> ancestor directory. For example, assuming the file that is 'requiring'
> lives at: /users/thatguy/dev/foo/bar/baz/myscript.js, the following paths
> would be checked for require('fob').
>
>
>    - /users/thatguy/dev/foo/bar/baz/node_modules/fob.js
>    - /users/thatguy/dev/foo/bar/baz/node_modules/fob/index.js
>    - /users/thatguy/dev/foo/bar/node_modules/fob.js
>    - /users/thatguy/dev/foo/bar/node_modules/fob/index.js
>    - /users/thatguy/dev/foo/node_modules/fob.js
>    - /users/thatguy/dev/foo/node_modules/fob/index.js
>    - /users/thatguy/dev/node_modules/fob.js
>    - /users/thatguy/dev/node_modules/fob/index.js
>    - /users/thatguy/node_modules/fob.js
>    - /users/thatguy/node_modules/fob/index.js
>    - /users/node_modules/fob.js
>    - /users/node_modules/fob/index.js
>    - /node_modules/fob.js
>    - /node_modules/fob/index.js
>
> Note that you can override the 'index.js' with a package.json:
> http://nodejs.org/api/modules.html#modules_folders_as_modules
>
> What I suspect may be catching you off-guard is that you assume that
> global modules are checked as well. The name is 'global modules' entirely
> misleading, it's more along the lines of 'global node binaries'. When you
> install a package with -g npm creates a script that invokes it and nothing
> more (allowing you to e.g. 'jake build' from anywhere). 'require' does *not
> *look in the global modules (you can get npm to 
> symlink<https://npmjs.org/doc/link.html> from
> the global modules into your local modules, but that is mostly
> 'superficial').
>
> Jonathan
>
>
> On Thu, Dec 27, 2012 at 2:44 AM, Isaac Schlueter <[email protected]> wrote:
>
>> Yeah, share the actual example code.
>>
>> require() works fine with absolute paths.
>>
>> $ cat > b.js
>> console.log('hello from b', __filename)
>> ^D
>> $ cat > a.js
>> require(require('path').resolve('b.js'))
>> ^D
>> $ node a.js
>> hello from b /Users/isaacs/dev/js/node-master/b.js
>>
>>
>> On Wed, Dec 26, 2012 at 4:33 PM, Domenic Denicola
>> <[email protected]> wrote:
>> > I don't believe `require` works with absolute paths, like those
>> generated by
>> > path.resolve. (Could be wrong.) If I'm correct, then you may find
>> > path.relative to be a useful method.
>> >
>> > Also note that of course path.resolve without a second argument will
>> resolve
>> > relative to process.cwd(), not relative to __filename. This is rarely
>> what
>> > you want.
>> >
>> >
>> > On Wednesday, December 26, 2012 10:12:13 AM UTC-5,
>> [email protected]
>> > wrote:
>> >>
>> >> Hi,
>> >>
>> >> Trying to simply require() in a .js file seems to be failing for me
>> here,
>> >> raising a MODULE_NOT_FOUND error.
>> >> However - a fs.readFileSync() on the file does work.
>> >>
>> >> My current failing debug code:
>> >> // Fails
>> >> require(require('path').resolve(module_file));
>> >>
>> >> // Works
>> >> require('fs').readFileSync(require('path').resolve(module_file),
>> 'UTF8');
>> >>
>> >> Since the readFileSync() call works I can rule out any file/directory
>> >> permissions leaving me with absolutely no ideas left as to why
>> require()
>> >> cannot find the file?
>> >>
>> >> Anyone have any debugging pointers to share?
>> >>
>> >> Darren
>> >
>> > --
>> > Job Board: http://jobs.nodejs.org/
>> > Posting guidelines:
>> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> > You received this message because you are subscribed to the Google
>> > Groups "nodejs" group.
>> > To post to this group, send email to [email protected]
>> > To unsubscribe from this group, send email to
>> > [email protected]
>> > For more options, visit this group at
>> > http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>> --
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines:
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>
>

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to