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

Node.js Type Module环境下Sequelize种子文件运行问题咨询

解决方法

方法1:临时覆盖模块类型执行命令

直接在package.json的scripts里新增脚本,利用NODE_OPTIONS环境变量临时切换到CommonJS模式运行Sequelize命令,完全不用手动修改package.json:

{
  "scripts": {
    "seed:update": "NODE_OPTIONS=\"--input-type=commonjs\" npx sequelize db:seed --seed src/db/seeders/000-updates.js"
  }
}

之后在根目录直接执行:

npm run seed:update

--input-type=commonjs会让Node.js临时以CommonJS模式处理Sequelize CLI脚本,不影响项目原本的ES模块配置。

方法2:自动修改并恢复package.json

如果方法1不生效,可以写个自动脚本帮你完成修改→执行→恢复的流程:

  1. 在根目录创建run-seed.sh脚本文件:
#!/bin/bash
# 读取原type字段值
ORIGINAL_TYPE=$(grep -o '"type": "[^"]*"' package.json | cut -d'"' -f4)
# 修改为commonjs
sed -i '' 's/"type": "[^"]*"/"type": "commonjs"/' package.json
# 执行种子命令
npx sequelize db:seed --seed src/db/seeders/000-updates.js
# 恢复原type字段
sed -i '' "s/\"type\": \"commonjs\"/\"type\": \"$ORIGINAL_TYPE\"/" package.json
  1. 给脚本添加执行权限:
chmod +x run-seed.sh
  1. 在package.json里新增脚本:
{
  "scripts": {
    "seed:update": "./run-seed.sh"
  }
}

执行时同样跑npm run seed:update,脚本会自动完成所有操作。

额外提示

如果你的Sequelize是v6及以上版本,也可以直接配置ES模块支持:

  • 把Sequelize配置文件改成ES模块格式(比如命名为sequelize.config.mjs)
  • 在命令里指定该配置文件:
npx sequelize db:seed --seed src/db/seeders/000-updates.js --config sequelize.config.mjs

这种方式不需要修改package.json的type,只要确保配置文件符合ES模块语法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:30:58