GraphQL不支持连字符?定义带连字符的枚举Schema报错求助
解决GraphQL Schema中连字符引发的语法错误
嘿,作为GraphQL新手碰到这个问题太正常啦!我来给你捋清楚为啥会报错,以及怎么解决:
为啥用连字符会报错?
GraphQL的语法规则里,枚举值、字段名、类型名这类标识符是不允许包含连字符(-)的。当你写Hello-Hello时,解析器会把第一个-当成数学里的减号,误以为你在写一个数值运算表达式,所以才会抛出那个“期望数字但得到了H”的错误——它完全没意识到你是想定义一个枚举值!
而下划线(_)是GraphQL允许用在标识符里的字符,所以换成Hello_Hello就不会有任何问题。
正确的枚举写法示例
把你的枚举定义改成下划线或者驼峰命名都可以:
enum HowAreYou { Hello_Hello Hai_Hai # 也可以用驼峰写法:HelloHello }
额外提一下GraphQL的命名规则
顺便给你补个小知识点,GraphQL标识符的命名要求:
- 必须以字母(a-z/A-Z)或者下划线(_)开头
- 后面可以跟字母、数字或者下划线
- 连字符、空格这类特殊字符一概不允许,解析器会把它们当成语法符号处理,自然就报错啦
这样修改之后,你的Schema就能正常解析运行啦!
内容的提问来源于stack exchange,提问作者John Davis
相关产品推荐
相关产品推荐

