连接MongoDB时遇TypeError:connectDB不是函数问题求助
问题解决:TypeError: connectDB is not a function
错误原因
你的db.js文件中定义了connectDB函数,但没有将它导出,导致server.js里通过const { connectDB } = require('./db.js')无法获取到这个函数,因此触发类型错误。
解决方案
修改db.js,添加函数导出即可,有两种实现方式:
方式1:在文件末尾添加模块导出
const { MongoClient } = require('mongodb'); const uri = 'mongodb://localhost:27017/mydatabase'; let db = null; async function connectDB() { console.log("Did you make it"); const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology:true}); try { await client.connect(); db = client.db(); console.log("connected to MongoDB"); } catch(err) { console.error("Could not connect to MongoDB", err); } } // 添加导出代码 module.exports = { connectDB };
方式2:直接导出函数
const { MongoClient } = require('mongodb'); const uri = 'mongodb://localhost:27017/mydatabase'; let db = null; // 直接将函数挂载到exports对象上 exports.connectDB = async function() { console.log("Did you make it"); const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology:true}); try { await client.connect(); db = client.db(); console.log("connected to MongoDB"); } catch(err) { console.error("Could not connect to MongoDB", err); } }
补充说明
这个问题属于Node.js的CommonJS模块系统问题,和React无关。修改导出后,server.js里的导入代码无需改动,即可正常调用connectDB().then(...)启动服务。
内容的提问来源于stack exchange,提问作者newdeveloper
相关产品推荐
相关产品推荐

