Express服务器报错TypeError:无法读取undefined的'database'属性
错误排查与修复:TypeError: Cannot read properties of undefined (reading 'database')
错误根源
你的代码存在模块导出语法错误:Node.js中标准的模块导出写法是module.exports,但你在models/index.js和config/config.js里都写成了module.export(少了末尾的s)。这导致require('../config/config')返回的是undefined,自然无法读取config.db相关属性。
修复步骤
1. 修正配置文件导出语法
修改config/config.js中的导出语句:
module.exports = { port: process.env.PORT || 8081, db: { database: process.env.DB_NAME || 'tabtracker', user: process.env.DB_USER || 'tabtracker', password: process.env.PASS || 'tabtracker', options: { dialect: process.env.DIALECT || 'sqlite', host: process.env.HOST || 'localhost', storage: './tabtracker.sqlite' } } }
2. 修正models文件导出语法
修改server/src/models/index.js末尾的导出语句:
const fs = require('fs') const path = require('path') const Sequelize = require('sequelize') const config = require('../config/config') const db = {} const sequelize = new Sequelize( config.db.database, config.db.user, config.db.password, config.db.options ) fs .readdirSync(__dirname) .filter((file) => file !== 'index.js') .forEach((file) => { const model = sequelize.import(path.join(__dirname, file)) db[model.name] = model }) db.sequelize = sequelize db.Sequelize = Sequelize module.exports = db
额外验证建议
可以在models/index.js的const config = require('../config/config')后添加一行日志,确认配置是否正确加载:
console.log('Loaded config:', config)
内容的提问来源于stack exchange,提问作者Barnum Taint
相关产品推荐
相关产品推荐

