Apollo+Express搭建GraphQL服务时报错找不到graphql模块
修复方案
核心问题
你遇到的找不到graphql模块报错由3个原因共同导致:
- 代码中使用了
type-graphql的装饰器,但未在依赖中安装该包 - 依赖版本互相不兼容:
apollo-server-express@3.x要求graphql版本≥15.0.0,你当前安装的graphql@14.2.1不符合要求 - 旧版本的
ts-node和typescript对装饰器语法、ES模块导入的支持存在缺陷
具体操作步骤
- 先卸载不兼容的旧依赖:
npm uninstall graphql @types/graphql typescript ts-node
- 安装匹配版本的生产依赖:
npm install graphql@15.x type-graphql@1.x
- 安装匹配版本的开发依赖:
npm install --save-dev typescript@4.x ts-node@10.x @types/node@16.x
- 检查根目录
tsconfig.json配置,确保开启装饰器相关支持,完整参考配置如下:
{ "compilerOptions": { "target": "ES2018", "module": "CommonJS", "experimentalDecorators": true, "emitDecoratorMetadata": true, "esModuleInterop": true, "skipLibCheck": true, "strict": false, "outDir": "./dist", "rootDir": "./src" }, "include": ["src/**/*"] }
- 清除缓存重新安装依赖启动:
删除根目录下的node_modules文件夹和package-lock.json文件,执行npm install后再运行npm run start即可。
额外注意项
你当前注释了TypeORM的初始化逻辑,后续如果需要操作数据库,需要在初始化ApolloServer之前完成TypeORM连接初始化,否则实体相关查询会报错。
内容的提问来源于stack exchange,提问作者Vikram Ganesan
相关产品推荐
相关产品推荐

