node sequelize在检查对象是否存在时抛出未定义的错误

ql3eal8s  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(502)

好吧,这不是很奇怪就是我不明白发生了什么。我正在尝试加载节点中的sequelize库。
尝试连接时,我使用的是cli生成的index.js文件,但是这行:

if (config.use_env_variable) {
    console.log('i ran');
  var sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
      var sequelize = new Sequelize(config.db.database, config.db.username, config.db.password, {
      dialect:config.db.dialect});
}

给我这个错误:

Cannot read property 'use_env_variable' of undefined

据我所知,这行是为了看看这甚至返回什么,所以我不明白为什么这是抛出错误?
更新
config在它上面的一行中被调用,此时整个文件是:

'use strict';

var fs        = require('fs');
var path      = require('path');
var Sequelize = require('sequelize');
var basename  = path.basename(__filename);
const config    = require(path.join(__dirname,'../config/config.js'));
const db        = {};

console.log(config);

if (config.use_env_variable) {
    console.log('i ran');
  var sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
      var sequelize = new Sequelize(config.db.database, config.db.username, config.db.password, {
      dialect:config.db.dialect});
}

在工作版本上更新config的console.log

iqjalb3h

iqjalb3h1#

经过3天的错误挣扎,今天我终于找到了解决办法。
我怎么解决的?
我使用js trim()函数删除空格。
例如

process.env.NODE_ENV === "development"   // return false

  why ?

 "development " === "development"   // return false because of extra space

process.env.node_env.trim()==“开发”//return true
这是我的解决办法

nwlqm0z1

nwlqm0z12#

看起来你没有 config/config.json 文件或路径不正确。在 model/index.js ,你会有这条线

let config = require(`${__dirname}/../../config/config.json`)[env];

或者类似的。确保这条路是正确的

相关问题