我正在尝试加载位于根目录
中的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
文件
答案 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')