使用graphql-import加载Schema时未找到Contact类型的问题求助
我之前也踩过graphql-import跨文件类型识别的坑,结合你的场景,给你几个实用的排查和解决方向:
检查导入语法的正确性
不同版本的graphql-import对导入语法的要求可能有差异,你当前的写法# import Contact from './contact.graphql'在某些版本里可能不生效,建议改成带花括号的明确导入方式试试:# import { Contact } from './contact.graphql'另外如果需要导入文件里的所有类型,也可以用
# import * from './contact.graphql'。验证文件路径是否准确
确保seller.graphql和contact.graphql处于同一目录,或者你写的相对路径是正确的(比如如果contact在子目录,要写成./subdir/contact.graphql)。可以先把路径改成绝对路径测试,排除路径解析的问题。确认graphql-import的包版本和加载方式
注意原来的graphql-import包已经被合并到@graphql-tools/import中了,如果你还在使用旧包,可能会出现兼容性问题。建议切换到@graphql-tools/import,并使用正确的加载代码:const { importSchema } = require('@graphql-tools/import'); async function loadSchema() { const schema = await importSchema('./seller.graphql'); // 后续处理schema }检查Contact类型的定义语法
确认contact.graphql里的Contact类型没有语法错误,比如是否遗漏了逗号、感叹号,或者有其他不符合GraphQL规范的写法——语法错误会导致整个文件无法被正确解析,自然也就识别不到类型了。清理缓存并重启服务
有时候开发环境的缓存会导致旧的schema没有更新,试试清理项目的缓存目录(比如node_modules/.cache),或者重启你的开发服务,再重新加载schema。
内容的提问来源于stack exchange,提问作者joy

