根据this link上的建议,我添加了一个名为mongoUtil的js模块,其中包含以下代码。
const MongoClient = require( 'mongodb' ).MongoClient;
const url = "mongodb://localhost:27017";
var _db;
module.exports = {
connectToServer: function(callback) {
MongoClient.connect(url, {useNewUrlParser: true}, function(err, client) {
_db = client.db('MyDB');
return callback(err);
});
},
getDb: function() {
return _db;
}
};
我还在我的app.js模块中使用了以下行:
const mongoUtil = require('mongoUtil')
但是,当两个模块位于同一目录中时,出现以下错误:
错误:找不到模块'mongoUtil'
我想念什么?谢谢。 J
答案 0 :(得分:1)
如果您为require
提供模块名称,它将在node_modules
中进行搜索。
如果要从当前目录读取模块,则需要使用文件路径。这可以是相对的:require("./mongoUtil")
答案 1 :(得分:0)
确切的文档是here,其中包括(相当长的)伪代码解释,说明了模块定位算法的工作原理。
但是简而言之,加载模块有两种基本方法:
require('mongodb')
。这将寻找(全局或本地)node_modules/mongodb
文件夹。require('./mongoUtil')
。这将在给定路径下查找文件-如果是相对文件,则相对于当前文件。因此,解决方案是使用require('./mongoUtil')
而不是require('mongoUtil')
。
答案 2 :(得分:0)
这将起作用:
const mongoUtil = require('./mongoUtil.js');
甚至只是以下内容,因为扩展名会自动解析:
const mongoUtil = require('./mongoUtil');