js文件位于同一目录中时找不到模块错误

时间:2020-06-05 18:28:12

标签: javascript nodes

根据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

3 个答案:

答案 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');