自定义模块表示js:在根目录下的模块文件夹中找不到模块名称错误

时间:2016-11-29 09:44:14

标签: javascript node.js express

我的快递js app的文件夹结构如下enter image description here

我正在尝试加载位于根目录

中的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;

但是我找到了一个未找到模块的错误:

  

无法找到模块'./modules'

注意:

如果modules文件夹位于node_modules文件夹中,则需要正常工作,但如果它在项目根目录中,则会出现模块名称错误, index.js文件夹

中还有一个modules文件

2 个答案:

答案 0 :(得分: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中查看它。

答案 1 :(得分:0)

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