Closed chamzzzzzz closed 6 years ago
如果你想要高级功能,你就不能直接protoc:loadfile,这个是给你方便使用的,实际上不带完整功能的,文档里说的用法是local p = protoc.new(); p:laodfile "...."
这种。实际上你的用法是undocument的。
当然这的确是个bug,所以改了23333
嗯嗯^-^,我也是看到文档中有这种用法。
local p = protoc.new() p:loadfile "...."
这种方法我之前也试过,也有同样的问题,现在已经修复啦。
protoc:loadfile加载不存在的proto文件,导致调用了未初始化的 info = self.import_fallback(name), 导致报错信息不准确。
https://github.com/starwing/lua-protobuf/blob/acfaeddf6c3bdd89d1f5e69e88d415f589bb8d35/protoc.lua#L280
测试代码:
local pb = require("pb") local protoc = require("protoc") protoc:loadfile("relative/path/to/not/exists.proto")
输出: lua: ./protoc.lua:283: attempt to call field 'import_fallback' (a nil value) stack traceback: ./protoc.lua:283: in function 'parsefile' ./protoc.lua:1001: in function 'compilefile' ./protoc.lua:1011: in function 'loadfile' demo2.lua:5: in main chunk [C]: in ?