2015-11-19 52 views
2

我在学习中的NodeJS进程和跨越这行代码跌跌撞撞:NodeJS使用require('../');

var irsdk = require('../'); 

装载什么我想不通。我可以看到变量的使用和调用函数。

我知道如何在加载特定文件时使用require语句。

如果任何人都可以摆脱一些光它将不胜感激。

谢谢。

+2

正在加载的模块是一个'index.js'文件,从你目前所在的位置开始。 –

+0

确实很好,这很有道理,但它把我扔了,因为它没有指定它。它是否知道按照惯例调用该文件,还是因为它在package.json文件中被列为主文件? –

+0

这就是Nodes模块加载器的工作方式,@zzzzBovs答案显示了模块如何查找。 –

回答

4

Node's documentation on Modules

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) 
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 

LOAD_NODE_MODULES(X, START) 
1. let DIRS=NODE_MODULES_PATHS(START) 
2. for each DIR in DIRS: 
    a. LOAD_AS_FILE(DIR/X) 
    b. LOAD_AS_DIRECTORY(DIR/X) 

NODE_MODULES_PATHS(START) 
1. let PARTS = path split(START) 
2. let I = count of PARTS - 1 
3. let DIRS = [] 
4. while I >= 0, 
    a. if PARTS[I] = "node_modules" CONTINUE 
    c. DIR = path join(PARTS[0 .. I] + "node_modules") 
    b. DIRS = DIRS + DIR 
    c. let I = I - 1 
5. return DIRS 

require('../')运行父目录的LOAD_AS_DIRECTORY(X)部分。

-1

它可能是JS的InRule SDK(http://www.inrule.com/products/inrule-for-javascript/)可用于将业务逻辑从应用程序逻辑中分离出来。

或者,它可能是npm'node-irsdk'软件包,它似乎是某种增强现有“utils”模块的遥测软件包。 (https://www.npmjs.com/package/node-irsdk

无论使用哪种方式,都可以通过字面记录变量来将其注销到控制台以获取有关它的更多信息。

console.log(irsdk); 
//or 
console.dir(irsdk); 
//both must be called AFTER you instantiate the var irsdk = req..... 
0

为了使这个简单,只要记住,如果你不指定一个文件,而是一个目录,这将是index.js文件将被载入。我们要求../女巫会加载上层目录的索引。