事实证明,由于 typecipt 的转换/编译,我遇到了这个错误。
一点背景知识:我在一个打字稿项目中使用 sequelize。并且数据库配置文件位于database.ts 文件中。
const config = {
development: {
username: env.PG_USERNAME,
password: env.PG_PASSWORD,
database: 'sample_db',
host: env.PG_HOST,
port: env.PG_PORT,
dialect: 'postgres',
},
test: {
username: env.PG_USERNAME,
password: env.PG_PASSWORD,
database: 'sample_db',
host: env.PG_HOST,
port: env.PG_PORT,
dialect: 'postgres',
},
production: {
username: env.PG_USERNAME,
password: env.PG_PASSWORD,
database: 'sample_db',
host: env.PG_HOST,
port: env.PG_PORT,
dialect: 'postgres',
},
};
export default config;
在.sequelizerc 文件中,我指向database.ts 文件的转译版本,即dist/config/database.js 文件。如下图:
const path = require('path');
module.exports = {
env: process.env.NODE_ENV || 'development',
config: path.resolve('dist', 'config', 'database.js'),
...
};
但在检查了database.ts 文件的转译版本后,我注意到配置被导出为:
module.exports.default = config
但sequelize 期望配置位于module.exports。
所以,我修改了database.ts 文件,将这一行附加到文件末尾,并为我解决了这个问题。
...
module.exports = config;