Sequelize出现SyntaxError:标识符'sequelize'已重复声明
问题:Sequelize变量重复声明导致语法错误
我正在学习Sequelize并跟随课程操作,但遇到了老师未出现的错误(我认为代码与老师完全一致)。
代码(libs/sequelize.js)
const { sequelize } = require('sequelize'); const { config } = require('./../config/config'); const setupModels = require('./../db/models'); const USER = encodeURIComponent(config.dbUser); const PASSWORD = encodeURIComponent(config.dbPassword); const URI = `mysql://${USER}:${PASSWORD}@${config.dbHost}:${config.dbPort}/${config.dbName}`; const sequelize = new Sequelize(URI, { dialect: 'mysql', logging: true, }); setupModels(sequelize); module.exports = sequelize;
终端报错信息
[nodemon] restarting due to changes... [nodemon] starting `node index.js` C:\Users\DanielaStornelli\Programacion\proyectos\my-store-data\libs\sequelize.js:12 const sequelize = new Sequelize(URI, { ^ SyntaxError: Identifier 'sequelize' has already been declared at Object.compileFunction (node:vm:360:18) at wrapSafe (node:internal/modules/cjs/loader:1048:15) at Module._compile (node:internal/modules/cjs/loader:1083:27) at Module._extensions..js (node:internal/modules/cjs/loader:1173:10) at Module.load (node:internal/modules/cjs/loader:997:32) at Module._load (node:internal/modules/cjs/loader:838:12) at Module.require (node:internal/modules/cjs/loader:1021:19) at require (node:internal/modules/cjs/helpers:103:18) at Object. (C:\Users\DanielaStornelli\Programacion\proyectos\my-store-data\services\product.service.js:5:19) at Module._compile (node:internal/modules/cjs/loader:1119:14) Node.js v18.8.0 [nodemon] app crashed - waiting for file changes before starting...
解决方法
错误根源是变量重复声明:第一行从sequelize包中解构导入了sequelize变量,后续又用const sequelize重新声明同名变量,这在JavaScript中是不允许的。
需要修改第一行的导入语句——我们需要的是Sequelize的构造函数,而非它的默认实例,把第一行改成:
const Sequelize = require('sequelize');
修改后的完整代码:
const Sequelize = require('sequelize'); const { config } = require('./../config/config'); const setupModels = require('./../db/models'); const USER = encodeURIComponent(config.dbUser); const PASSWORD = encodeURIComponent(config.dbPassword); const URI = `mysql://${USER}:${PASSWORD}@${config.dbHost}:${config.dbPort}/${config.dbName}`; const sequelize = new Sequelize(URI, { dialect: 'mysql', logging: true, }); setupModels(sequelize); module.exports = sequelize;
调整后即可解决变量重复声明问题,代码能正常运行。
内容的提问来源于stack exchange,提问作者danistor_m
相关产品推荐
相关产品推荐

