我正在尝试将我的 express 应用程序部署在 Heroku 上,使用 heroku-Postgres 作为带有 Sequelize ORM 的数据库。
这是我的续集 index.js 文件:
'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.js')[env];
const db = {};
var sequelizeNoUpdateAttributes = require('sequelize-noupdate-attributes');
let sequelize;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config);
// sequelizeNoUpdateAttributes(sequelize)
} else {
sequelize = new Sequelize(config.database, config.username, config.password,config);
}
// sequelizeNoUpdateAttributes(sequelize)
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.user = require('./User')(sequelize,Sequelize);
db.Banner = require('./Banners')(sequelize,Sequelize);
db.affiliate = require('./Affiliate')(sequelize,Sequelize);
db.affiliate.hasMany(db.user, {foreignKey: "AffiliateRefcode",
as: "Users" });
db.user.belongsTo(db.affiliate, {
foreignKey: "AffiliateRefcode",
as: "Affiliate",
});
db.Banner=require('./Banners')(sequelize,Sequelize);
db.user.hasMany(db.Banner,{foreignKey: "UserId"});
db.Banner.belongsTo(db.user,{
foreignKey:"UserId",
as:"Banner"
})
module.exports = db;
这是我所有 Sequelize 配置的 config.js 文件
module.exports = {
development: {
username:"postgres",
password:"postgres",
database:"postgres",
host:"127.0.0.1",
port:"5432",
dialect:"postgres",
logging:false
},
test:{
username:"postgres",
password:"postgres",
database:"postgres",
host:"127.0.0.1",
port:"5432",
dialect:"postgres",
logging:false
},
production: {
use_env_variable: "postgres://yspwdafvwniobd:8b34a48902f9fe06f0dbb4ad09421140b5d67f5c1d65b994987f836c0668e9d7@ec2-3-222-11-129.compute-1.amazonaws.com:5432/d27k83hqhjo247",
dialect: "postgres"
}
}
但是,在将应用程序部署到 Heroku 并检查日志时,出现错误:
2021-04-12T16:08:08.701474+00:00 app[web.1]: throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
2021-04-12T16:08:08.701475+00:00 app[web.1]: ^
2021-04-12T16:08:08.701475+00:00 app[web.1]:
2021-04-12T16:08:08.701476+00:00 app[web.1]: TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received undefined
2021-04-12T16:08:08.701477+00:00 app[web.1]: at validateString (internal/validators.js:124:11)
2021-04-12T16:08:08.701477+00:00 app[web.1]: at Url.parse (url.js:160:3)
2021-04-12T16:08:08.701478+00:00 app[web.1]: at Object.urlParse [as parse] (url.js:155:13)
2021-04-12T16:08:08.701478+00:00 app[web.1]: at new Sequelize (/app/node_modules/sequelize/lib/sequelize.js:185:28)
2021-04-12T16:08:08.701478+00:00 app[web.1]: at Object.<anonymous> (/app/Database/models/index.js:14:17)
2021-04-12T16:08:08.701479+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:1063:30)
2021-04-12T16:08:08.701479+00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
2021-04-12T16:08:08.701480+00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:928:32)
2021-04-12T16:08:08.701480+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:769:14)
2021-04-12T16:08:08.701480+00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:952:19) {
2021-04-12T16:08:08.701481+00:00 app[web.1]: code: 'ERR_INVALID_ARG_TYPE'
可能有什么问题?