执行shopify theme serve命令出现TypeError意外报错求助
报错触发场景
执行shopify theme serve启动本地主题开发服务时抛出异常,错误核心信息为no implicit conversion of String into Integer (TypeError),堆栈跟踪定位到Shopify CLI 2.18.1版本的lib/shopify_cli/theme/file.rb第137行JSON处理逻辑,错误发生在文件校验和计算、待更新JSON文件队列扫描阶段。
故障根因
这个报错由两类原因触发:
- 本地主题目录下的JSON文件(包含
config/settings_schema.json、config/settings_data.json、templates/目录下所有JSON模板、locales/下的语言文件)存在结构不合法问题:CLI遍历JSON结构时,预期拿到数组索引(整数类型),实际读到了字符串类型的键,说明本该是数组的结构被写成了对象格式,或者存在JSON语法错误。 - Shopify CLI 2.18.1版本本身存在JSON标准化逻辑的已知bug,对部分合法的嵌套JSON结构也会误判抛出类型错误。
修复方案
按优先级依次操作即可:
- 先全量扫描本地主题下所有后缀为
.json的文件,排查语法错误、结构错误:重点检查有没有多余的尾逗号、引号不闭合、数组/对象结构写错的问题,修复所有格式不合法的JSON文件。 - 卸载当前旧版本Ruby版Shopify CLI,安装最新稳定版:
条件允许的话建议直接替换为Shopify官方维护的新版Node.js版CLI,旧Ruby版CLI已经停止功能更新,这类JSON处理bug不会再做特殊适配。gem uninstall shopify-cli -aIx gem install shopify-cli - 删除主题根目录下的
.shopify-cli-cache缓存目录,清除CLI之前生成的错误文件校验缓存。 - 重新执行
shopify theme serve启动服务即可。
快速定位技巧:可以逐个移走主题下的JSON文件,每次移走一个就重试启动命令,当移走某个文件后报错消失,就能精准定位到出问题的具体JSON文件,不用全量排查所有文件。
内容的提问来源于stack exchange,提问作者Gunta XD
相关产品推荐
相关产品推荐

