Node.js 在Nodejs中导出变量时出现未定义错误

Node.js 在Nodejs中导出变量时出现未定义错误,node.js,Node.js,这是我的managedb.js var Sequelize = require('sequelize-postgres').sequelize; var postgres = require('sequelize-postgres').postgres; var db = new Sequelize('test', 'postgres', 'postgres', { dialect: 'postgres' }); var models = [ 'user' ]; models.f

这是我的managedb.js

var Sequelize = require('sequelize-postgres').sequelize;
var postgres  = require('sequelize-postgres').postgres;

 var db = new Sequelize('test', 'postgres', 'postgres', {
  dialect: 'postgres'
});


var models = [
'user'
];

models.forEach(function(model) {
module.exports[model] = db.import(__dirname + '/' + model);
});



module.exports.db = db;
这是我的user.js

var sequelize = require("sequelize");
var seq = require("./managedb");
var db = seq.db;

var Project = db.define('Project', {
  title: sequelize.STRING,
  description: sequelize.TEXT
});
我不明白为什么会出现这样的错误:

var Project = db.define('Project', {
                 ^
TypeError: Cannot call method 'define' of undefined

这是为什么造成的?我是否导出了错误的变量?还是必须向managedb.js添加db.sync()语句

您是否验证了在managedb.js中调用
db.define
是否有效?这将告诉您这个问题是否与导出有关。是的,刚刚检查过,虽然在创建表时出现SQL错误,但它仍然有效。与db.define无关我在你发布的代码中没有看到任何会妨碍
module.exports.db=db停止工作。managedb.js中还有更多的代码吗?会导致
db
被破坏,或者永远无法到达export语句,或者异步到达export语句(已经太晚了)?您可以在mod.exports之后和db.define之前输入
console.log
语句,并确保它们按预期顺序出现。只是一些想法。我确实再次检查了var seq=require(“./managedb”);控制台日志(seq);这返回了{}我想这里可能出错了。就像我说的,确保module.exports语句被访问(而不是异步)。