Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Node.js - require empty path

I came across this file on github, which does this:

var migrate = require('../')

What does that mean? When I tried the same, I get: Error: Cannot find module '../'

like image 815
jeffreyveon Avatar asked Dec 02 '11 16:12

jeffreyveon


2 Answers

Here is the document from the official node js website. I just put the full steps here, but in terms of your question, find ---- here is what you wanted to know ----

require(X) from module at path Y
1. If X is a core module,
   a. return the core module
   b. STOP
2. If X begins with './' or '/' or '../'
   a. LOAD_AS_FILE(Y + X)
   b. LOAD_AS_DIRECTORY(Y + X)
3. LOAD_NODE_MODULES(X, dirname(Y))
4. THROW "not found"

LOAD_AS_FILE(X)
1. If X is a file, load X as JavaScript text.  STOP
2. If X.js is a file, load X.js as JavaScript text.  STOP
3. If X.json is a file, parse X.json to a JavaScript Object.  STOP
4. If X.node is a file, load X.node as binary addon.  STOP

LOAD_AS_DIRECTORY(X) ---- here is what you wanted to know ----
1. If X/package.json is a file,
   a. Parse X/package.json, and look for "main" field.
   b. let M = X + (json main field)
   c. LOAD_AS_FILE(M)
2. If X/index.js is a file, load X/index.js as JavaScript text.  STOP
3. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP
4. If X/index.node is a file, load X/index.node as binary addon.  STOP

More info, please check https://nodejs.org/api/modules.html#modules_all_together

like image 64
Xin Avatar answered Oct 05 '22 22:10

Xin


It requires the file index.js of the parent folder, which is this one: https://github.com/visionmedia/node-migrate/blob/master/index.js

like image 24
thejh Avatar answered Oct 05 '22 22:10

thejh