【问题标题】:TypeError: Cannot read property 'database' of undefinedTypeError:无法读取未定义的属性“数据库”
【发布时间】:2019-12-07 15:14:32
【问题描述】:

我有两个文件-config.js 和 index.js 我写的代码如下-

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.DB_PASS|| 'tabtracker',
        options:{
            dialect:process.env.DIALECT ||'sqlite',
            host:process.env.HOST ||'localhost', 
            storage:'./tabtracker.sqlite'

        }
    }
}

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.password,
    config.db.user,
    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

为什么会抛出错误?我已经在 index.js 中正确导入了 config.js。我还正确声明了配置文件。

【问题讨论】:

    标签: javascript node.js sequelize.js


    【解决方案1】:

    const config=('../config/config') - 这里没有require 关键字。所以config 不是你的配置,只是右边的一个字符串。因此访问undefined 的属性,即config.db

    【讨论】:

    • 现在显示这个错误-Error: Cannot find module '../config/config'
    • @JackGiratina 你的 index.js 和 config.js 在哪里?尝试 console.log(config) 看看你是否明白。如果它们在同一级别(在同一目录中),则应为const config=require('./config')
    猜你喜欢
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多