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

overmind graphql场景下导入Phoenix npm包报错如何解决?

Node模块导入报错:找不到'phoenix'模块

我执行npm install重新安装所有Node模块后遇到以下报错:

Cannot find module 'phoenix' from 'node_modules/@absinthe/socket/compat/cjs/index.js'

报错触发自@absinthe/socket/compat/cjs/index.js文件中的require('phoenix');语句。
同时overmind-graphql也依赖phoenix,IDE中也显示该导入异常:overmind-graphql对应代码行里的import { Socket as PhoenixSocket } from 'phoenix';导入失败。

本地已安装的相关依赖版本如下:

"overmind": "^28.0.1",
"overmind-graphql": "^8.0.1",
"overmind-react": "^29.0.1",
"phoenix": "^1.6.0",
"@absinthe/socket": "^0.2.1",
"graphql": "^15.5.1",
"graphql-react": "^15.0.0",
"graphql-tag": "^2.12.4",
"react": "^17.0.1"

已经尝试过以下操作都没有解决问题:

  • 手动重新安装phoenix和@absinthe/socket
  • 删除整个node_modules目录后重新安装所有依赖
  • 删除package-lock.json和node_modules后重新安装所有依赖
  • 移除React组件中对overmind的导入:此时无报错,因为不会执行到phoenix的导入逻辑
  • 用next build和next start运行,替代热重载的next dev模式

解决方案

方案1:降级phoenix到适配版本

@absinthe/socket 0.2.1版本适配的是phoenix 1.5.x的导出结构,1.6.0之后phoenix调整了包导出规则,CJS模式下直接require会找不到入口。直接安装1.5.x分支的最终版本即可:

npm install phoenix@1.5.13

方案2:配置模块别名(不想降级phoenix可选)

你使用的是Next.js框架,可以在next.config.js中添加webpack别名,手动指定phoenix的CJS入口路径:

// next.config.js
module.exports = {
  webpack: (config) => {
    config.resolve.alias['phoenix'] = require.resolve('phoenix/priv/static/phoenix.cjs.js')
    return config
  }
}

方案3:强制统一依赖版本

如果存在多版本phoenix共存的问题,可以在package.json中添加对应配置强制所有依赖使用同一个phoenix版本:

  • 用yarn/pnpm的用户,添加resolutions字段:
"resolutions": {
  "phoenix": "^1.6.0"
}
  • 用npm 8.3+的用户,添加overrides字段:
"overrides": {
  "phoenix": "^1.6.0"
}

配置完成后重新安装依赖即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:09:04