You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在server.js中以ES6方式导入Sequelize的users模型?已设type:module仍报错

解决Sequelize模型ES6导入报错问题

问题背景

已在package.json中配置"type": "module",项目其他模块采用ES6方式导入均正常,但在server.js中导入Sequelize的users模型时抛出错误。

相关代码

  • users模型文件(user.js):
'use strict';
module.exports = (sequelize, DataTypes) => {
    const users = sequelize.define('users', {
        id: {
            type: DataTypes.INTEGER(10),
            allowNull: false,
            primaryKey: true,
            autoIncrement: true
        },
        email: {
            type: DataTypes.STRING(100),
            allowNull: false
        },
        password: {
            type: DataTypes.STRING(100),
            allowNull: false
        }
    }, {
        timestamps: true,
        tableName: 'users'
    });

    return users;
};
  • server.js导入代码:
import usersSchema from "./modals/users.js";

控制台错误信息

node:40244)
Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
C:\Project\study\matblogs\src\server.js:23

原因分析

  1. 模型文件采用CommonJS的module.exports导出,与项目ES模块环境的导入方式不兼容,即使Node允许混合加载,仍可能触发兼容性警告。
  2. 导入路径存在拼写错误:./modals/users.js中的modals大概率应为models,路径错误会导致文件加载失败,进而触发类似警告。

解决方案

1. 将模型文件改为ES6导出格式

修改user.js的导出语句,将module.exports替换为export default:

'use strict';
export default (sequelize, DataTypes) => {
    const users = sequelize.define('users', {
        id: {
            type: DataTypes.INTEGER(10),
            allowNull: false,
            primaryKey: true,
            autoIncrement: true
        },
        email: {
            type: DataTypes.STRING(100),
            allowNull: false
        },
        password: {
            type: DataTypes.STRING(100),
            allowNull: false
        }
    }, {
        timestamps: true,
        tableName: 'users'
    });

    return users;
};

2. 修正导入路径拼写

将server.js中的导入路径改为正确的文件夹名称(假设文件夹名为models):

import usersSchema from "./models/users.js";

3. 确认package.json配置正确性

确保"type": "module"位于package.json顶层,示例配置:

{
  "name": "matblogs",
  "version": "1.0.0",
  "type": "module",
  // 其他配置项...
}

内容的提问来源于stack exchange,提问作者soccerway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:45:20