【发布时间】:2020-03-25 23:57:41
【问题描述】:
当我使用 NPM 运行我的应用程序时,它运行没有问题。使用我的 VSC 调试器运行它时,我在位于 node_modules/mongodb/lib/collection.js 的 collection.js 中两次收到以下错误:
TypeError: Cannot read property 'namespace' of undefined
at Object.get [as dbName] (/xxxx/xxxx/xxxx/xxxx/node_modules/mongodb/lib/collection.js:184:19)
at Object.<anonymous> (/xxxx/xxxx/xxxx/xxxx/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:184:36)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (/xxxx/xxxx/xxxx/xxxx/node_modules/mongoose/lib/drivers/node-mongodb-native/index.js:8:22)
实例 1 已在此处提取:
Object.defineProperty(Collection.prototype, 'dbName', {
enumerable: true,
get: function() {
return this.s.namespace.db;
}
});
实例 2 在此处接机:
Object.defineProperty(Collection.prototype, 'collectionName', {
enumerable: true,
get: function() {
return this.s.namespace.collection;
}
});
我在 app.js 中的连接配置如下所示(在使用 NPM 运行应用程序时可以正常工作,没有任何错误):
const dbUser = process.env.xxxxx;
const dbPass = process.env.xxxxx;
const dbURL = process.env.xxxxx;
const dbName = process.env.xxxxxx;
mongoose.set('useCreateIndex', true);
mongoose.connect(`mongodb+srv://${dbUser}:${dbPass}@${dbURL}/${dbName}`, {useNewUrlParser: true , useUnifiedTopology: true} )
.then(_ => console.log('MongoDB successfully connected!'))
.catch(err => console.error(err));
本应用中唯一加载Mongoose的Mongoose模型如下:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// UserSchema has been omitted for privacy
const UserSchema = new Schema({
});
module.exports = User = mongoose.model('User', UserSchema);
没有其他加载 Mongoose 模块的实例。我还检查了我在 mongoose.connect 方法中传递的选项,它似乎也不是它们。此外,我检查了存储在 env 文件中的值,它们似乎也没有导致问题。
谢谢,非常感谢任何帮助!
【问题讨论】: