jeffreyveon
jeffreyveon

Reputation: 13830

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 '../'

Upvotes: 11

Views: 1750

Answers (2)

Xin
Xin

Reputation: 36520

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

Upvotes: 3

thejh
thejh

Reputation: 45568

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

Upvotes: 14

Related Questions