我正在使用 ShopifyAPI Ruby gem。作为 gem 的一部分,我可以删除特定位置的产品的 InventoryLevel。
这个效果很好:
ShopifyAPI::InventoryLevel.delete(
inventory_item_id: "correct_id",
location_id: "and_another_correct_id"
)
问题是,删除关卡后 API 会抛出此错误:
NoMethodError (undefined method `empty?' for nil:NilClass)
这种情况每次都会发生,我不知道为什么。
其他人也发生过这种情况吗?有什么想法吗?
首先,错误消息告诉您,当您触发该方法时,有东西正在调用
nil.empty?
,因此只需找出哪里发生了这种情况即可。
您使用的 gem 版本是什么? ShopifyAPI::InventoryLevel#delete 只是发送一个 API 请求,因此类似的错误将出现在 gem 处理该请求响应的逻辑中的某个位置。浏览一下存储库,它调用的请求方法可能是
ShopifyAPI::Clients::HttpClient#request
。 #delete
方法正在向其 API 发送 DELETE 请求,该请求应返回 204 No Content 响应。 HTTP 客户端文件显示它们正在调用 .empty?
并且对 nil 响应正文进行了处理,但是如果您查看文件的版本历史记录,您可以看到这是在不到一年前标记为 v13 的提交中添加的。 4.0。您可能使用的 gem 版本早于该错误修复,只需更新它即可。