如何解决node:internal/modules/cjs/loader:942 throw err找不到模块报错
报错核心原因
三个问题直接导致模块找不到的报错:
- 命令执行顺序完全颠倒:你在还没安装任何项目依赖的时候就尝试跑codegen初始化命令,本地
node_modules目录下根本不存在graphql-codegen相关的文件,npm自然找不到对应模块。 - 命令写法错误:
install是npm内置原生命令,不需要加run前缀,写npm run install会让npm去package.json的scripts配置里找你自定义的名为install的脚本,找不到也会抛错;graphql-codegen init是codegen cli提供的命令,在你没把对应cli配置到scripts里之前,不能通过npm run调用。 - 依赖缺失:从你贴的package.json配置来看,项目里根本没有添加
@graphql-codegen/cli及相关插件的依赖声明,不管跑多少次命令都会报找不到模块。
修复操作步骤
严格按顺序在项目根目录执行以下命令即可解决:
- 先安装项目已有依赖,直接跑npm原生安装命令:
npm install
- 将GraphQL Code Generator的官方CLI安装到项目开发依赖中:
npm install -D @graphql-codegen/cli
- 调用本地安装的CLI执行初始化流程,这里用npx调用本地依赖的可执行文件,不要加npm run:
npx graphql-codegen init
初始化过程中按照交互提示选择你项目对应的技术栈、生成文件路径、需要的插件即可,流程走完后工具会自动把所需的其他codegen依赖、对应执行脚本添加到package.json文件中。
4. 初始化完成后再执行一次依赖安装,把上一步新增的codegen相关插件依赖装到本地:
npm install
- 后续需要生成GraphQL类型代码时,直接执行初始化流程自动写入package.json的脚本即可,默认生成的脚本一般是
npm run codegen,具体以你scripts字段里的实际配置为准。
避坑提示:尽量不要全局安装graphql-codegen-cli,全局版本很容易和项目本地要求的版本产生冲突,用npx调用项目本地安装的版本是最稳定的方案。
内容的提问来源于stack exchange,提问作者Malik Abdulaziz
相关产品推荐
相关产品推荐

