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

无法正常使用@graphql-codegen/cli:找不到'stream/web'模块错误

解决 GraphQL Codegen 初始化时的 Cannot find module 'stream/web' 错误

问题详情

工作环境

  • Windows 10
  • 非管理员用户
  • NodeJS 16.0.0
  • NPM 7.24.2
  • Typescript 5.2.2
  • Apollo Server Express 3.12.1
  • GraphQL 15.8.0

错误信息

执行npx graphql-code-generator init时触发以下错误:

node:internal/modules/cjs/loader:943
  throw err;
  ^

Error: Cannot find module 'stream/web'
Require stack:
- C:\Users\random\Documents\gitlab\game-backend\node_modules\@graphql-codegen\cli\node_modules\@graphql-tools\apollo-engine-loader\node_modules\@whatwg-node\fetch\dist\create-node-ponyfill.js
- C:\Users\random\Documents\gitlab\game-backend\node_modules\@graphql-codegen\cli\node_modules\@graphql-tools\apollo-engine-loader\node_modules\@whatwg-node\fetch\dist\node-ponyfill.js
- C:\Users\random\Documents\gitlab\game-backend\node_modules\@graphql-codegen\cli\node_modules\@graphql-tools\apollo-engine-loader\cjs\index.js
- C:\Users\random\Documents\gitlab\game-backend\node_modules\@graphql-codegen\cli\cjs\graphql-config.js
- C:\Users\random\Documents\gitlab\game-backend\node_modules\@graphql-codegen\cli\cjs\config.js
- C:\Users\random\Documents\gitlab\game-backend\node_modules\@graphql-codegen\cli\cjs\cli.js
- C:\Users\random\Documents\gitlab\game-backend\node_modules\@graphql-codegen\cli\cjs\bin.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:940:15)
    at Function.Module._load (node:internal/modules/cjs/loader:773:27)
    at Module.require (node:internal/modules/cjs/loader:1012:19)
    at require (node:internal/modules/cjs/helpers:93:18)
    at createNodePonyfill (C:\Users\random\Documents\gitlab\game-backend\node_modules\@graphql-codegen\cli\node_modules\@graphql-tools\apollo-engine-loader\node_modules\@whatwg-node\fetch\dist\create-node-ponyfill.js:31:24)
    at Object.<anonymous> (C:\Users\random\Documents\gitlab\game-backend\node_modules\@graphql-codegen\cli\node_modules\@graphql-tools\apollo-engine-loader\node_modules\@whatwg-node\fetch\dist\node-ponyfill.js:3:19)     
    at Module._compile (node:internal/modules/cjs/loader:1108:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)
    at Module.load (node:internal/modules/cjs/loader:988:32)
    at Function.Module._load (node:internal/modules/cjs/loader:828:14) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'C:\\Users\\random\\Documents\\gitlab\\game-backend\\node_modules\\@graphql-codegen\\cli\\node_modules\\@graphql-tools\\apollo-engine-loader\\node_modules\\@whatwg-node\\fetch\\dist\\create-node-ponyfill.js',        
    'C:\\Users\\random\\Documents\\gitlab\\game-backend\\node_modules\\@graphql-codegen\\cli\\node_modules\\@graphql-tools\\apollo-engine-loader\\node_modules\\@whatwg-node\\fetch\\dist\\node-ponyfill.js',
    'C:\\Users\\random\\Documents\\gitlab\\game-backend\\node_modules\\@graphql-codegen\\cli\\node_modules\\@graphql-tools\\apollo-engine-loader\\cjs\\index.js',
    'C:\\Users\\random\\Documents\\gitlab\\game-backend\\node_modules\\@graphql-codegen\\cli\\cjs\\graphql-config.js',
    'C:\\Users\\random\\Documents\\gitlab\\game-backend\\node_modules\\@graphql-codegen\\cli\\cjs\\config.js',
    'C:\\Users\\random\\Documents\\gitlab\\game-backend\\node_modules\\@graphql-codegen\\cli\\cjs\\cli.js',
    'C:\\Users\\random\\Documents\\gitlab\\game-backend\\node_modules\\@graphql-codegen\\cli\\cjs\\bin.js'
  ]
}

package.json 配置

{
  "name": "game-backend",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node build/src/index.js",
    "build": "npx tsc",
    "serve": "concurrently \"npx tsc --watch\" \"nodemon -q build/src/index.js\""
  },
  "repository": {
    "type": "git",
    "url": "SomethingIDon'tWantToShow"
  },
  "author": "SomethingIDon'tWantToShow",
  "license": "ISC",
  "dependencies": {
    "@graphql-tools/graphql-file-loader": "^8.0.0",
    "@graphql-tools/load": "^8.0.0",
    "@graphql-tools/schema": "^8.5.1",
    "@graphql-tools/utils": "^8.9.0",
    "@types/cors": "^2.8.12",
    "@types/express": "^4.17.14",
    "@types/graphql": "^14.5.0",
    "@types/node": "^20.5.9",
    "@types/sequelize": "^4.28.15",
    "apollo-server-core": "^3.12.1",
    "apollo-server-express": "^3.12.1",
    "body-parser": "^1.20.2",
    "dotenv": "^16.3.1",
    "express": "^4.18.2",
    "express-session": "^1.17.3",
    "graphql": "^15.8.0",
    "graphql-subscriptions": "^2.0.0",
    "keycloak-connect": "^22.0.2",
    "pg": "^8.11.3",
    "pg-hstore": "^2.3.4",
    "sequelize": "^6.32.1",
    "subscriptions-transport-ws": "^0.11.0",
    "type-graphql": "^1.1.1"
  },
  "devDependencies": {
    "@graphql-codegen/cli": "^5.0.0",
    "@graphql-codegen/client-preset": "^4.1.0",
    "@types/express-session": "^1.17.7",
    "@types/ws": "^8.5.5",
    "concurrently": "^8.2.1",
    "nodemon": "^3.0.1",
    "typescript": "^5.2.2"
  }
}

已尝试的无效方案

  • 以管理员模式执行初始化命令
  • 删除node_modules和package-lock.json后重装依赖
  • 确认错误提及的文件存在且路径正确
  • 更新NPM版本
  • 同事相同配置项目无此问题,暂未更换NodeJS版本

解决思路

1. 降级 GraphQL Codegen 版本

@graphql-codegen/cli@5.x 依赖的 @whatwg-node/fetch 要求 Node.js 18+,而 Node.js 16.0.0 不支持内置的 stream/web 模块。可以降级到兼容 Node 16 的版本:

  • 修改 package.json 中的 devDependencies:
    "@graphql-codegen/cli": "^4.0.0",
    "@graphql-codegen/client-preset": "^3.0.0"
    
  • 删除 node_modules 和 package-lock.json
  • 执行 npm install 重新安装依赖

2. 锁定兼容 Node 16 的 @whatwg-node/fetch 版本

利用 npm 的 overrides 功能强制指定兼容版本:

  • 在 package.json 中添加以下字段:
    "overrides": {
      "@whatwg-node/fetch": "^0.9.0"
    }
    
  • 删除 node_modules 和 package-lock.json
  • 执行 npm install

3. 升级 Node.js 版本(推荐)

Node.js 16 已结束官方维护,升级到 18.x 或更高版本可以从根本上解决依赖兼容性问题,同时获得更好的性能和安全性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:54:50