Sequelize 不在 postgresql 中创建任何表

Sequelize not creating any tables in postgresql

我刚刚将一个项目拉到一台新机器上,我将 PostgreSQL 用于我的数据库,将 sequelize 作为 ORM,以及 feathersjs 和 express 或中间件。我尝试像往常一样启动项目,但它不起作用。

我有一个包含我所有环境配置信息的 .env 文件,我通常做的是先 运行 sequelize db:create,创建数据库,然后,我使用 npm start创建 tables。但是,当我这样做时,它不会创建任何 table 或显示任何错误,它只会显示 info: Feathers application started on http://localhost:3030 但是当我打开 pgAdmin 时,数据库是空的。我尝试在 sequelize 中登录,但它根本没有显示任何内容。我还删除了 ENV,它在 npm start 处没有显示任何错误(它确实在 sequelize db:create 处显示错误。这让我抓狂。

这是我的 sequelize.js:

require('dotenv').config();
const Sequelize = require('sequelize');
const { Op } = Sequelize;  
const operatorsAliases = {
   // ...
};

module.exports = function (app) {
  const connectionString = `postgres://${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@` +
`${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`;

 const sequelize = new Sequelize(connectionString, {
dialect: 'postgres',
dialectOptions: {
  ssl: false
},
logging: console.log,
operatorsAliases,
define: {
  freezeTableName: true
}
  });

const oldSetup = app.setup;

 app.set('sequelizeClient', sequelize);

app.setup = function (...args) {
 const result = oldSetup.apply(this, args);

// Set up data relationships
const models = sequelize.models;
Object.keys(models).forEach(name => {
  if ('associate' in models[name]) {
    models[name].associate(models);
  }
});

// Sync to the database
sequelize.sync({ logging: console.log });

return result;
 };
};

我的 npm 启动脚本只是指向一个 app.js 文件,我只是在其中导入 sequelize with app.configure(sequelize);

创建数据库后可能需要运行sequelize db:migrate

事实证明实际上是节点 14 的问题。我必须安装更新版本的 node-Postgres (pg@8.0.3),如 here

中所指出的