2016-11-29 35 views
0
我的快递JS应用程序的

文件夹结构看起来像这样enter image description here自定义模块快递JS:找不到模块名称错误时,在根目录下的模块文件夹

我试图加载modules文件夹位于根目录

路线/ users.js

var express = require('express'); 
var router = express.Router(); 
var md=require('./modules'); 

/* GET users listing. */ 
router.get('/',function(req, res, next) { 
    //res.send('respond with a resource'); 
    console.log('test'); 
    res.status(200).json({ error: 'message' }); 
}); 

module.exports = router; 

但我得到一个模块未找到错误:

Cannot find module './modules'

注:

如果modules文件夹位于node_modules文件夹需要工作正常,但得到的模块名称错误,如果它在项目的根目录下, 也是一个index.js文件modules文件夹存在

回答

2

当您的分辨率以.开头时,NodeJS中的模块分辨率与从属模块的目录相关。

换句话说:

var module = require('../modules'); // Since your file is in `./routes/index` 
            // and `module` is in `./modules/index` 

如果你没有在需要的模块前面提供.,然后将的NodeJS寻找在node_modules目录模块。

摘自documentation,这是不言自明的。

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" 

所以在你的情况下当你require('./modules')。 NodeJS在当前目录./routes中查找它,然后因为找不到它,所以在node_modules中查看它。

+0

完美:)现在它的工作正常 –

0

而不是'./modules'你可以尝试require('../ modules')