自定义插件:mac电脑本地安装可以通过,但是把mac编译后的插件,放到服务器上EMQX报错,错误:{crc32cer_nif_not_loaded,"plugins/emqx_lazzen_plugin-1.0.1/crc32cer-0.1.8/priv/crc32cer_nif"},[{erlang,nif_error,[{crc32cer_nif_not_loaded,"plugins/emqx_lazzen_plugin-1.0.1/crc32cer-0.1.8/priv/crc32cer_nif"

可以在启动插件的时候检查 crc32cer ,如果未加载则手动加载下
参考:check_crc32cer_nif/0
emqx_plugin_kafka/src/emqx_plugin_kafka_util.erl at master · jostar-y/emqx_plugin_kafka (github.com)

就是按照你这个写的,本地测试可以,但是放到服务器上就不行了

我有个问题,就是我这个服务器上的报错信息,为啥是我电脑上的路径

服务器上跑是报上面的错吗?插件有使用你本地新发布的包吗?

或者再次启动插件前,先在erlang控制台上执行以下代码

code:purge(crc32cer),
code:load_file(crc32cer).

而后再启动插件

我自己测试了一下,我启动插件的时候,这两行代码启动不起来,不知道为啥,本地就能启动起来

本地emqx上跑没问题,我放到liunx服务器上跑就报错。包和本地用的一样的

在代码 check_crc32cer_nif/0 前后各加个log,查看代码是否执行

加了,执行了,结果显示没执行成功

我怀疑是不是我编译的包问题呀!为啥我服务器上报错的信息有我本地的地址呀 :grinning:

是在哪一步没执行成功,有没有报错?控制台中手动执行下列代码,有什么返回?

code:purge(crc32cer),
code:load_file(crc32cer),
crc32cer:nif("1").

code:purge(crc32cer),
code:load_file(crc32cer) 没执行成功

方便把生成的插件包发出来吗?我本地试下
还有你使用的emqx版本和插件中引用的emqx版本分别是?

好的

帮我看看,谢谢你了,我是主要做java的,erlang都是现学现卖,erlang太难了 :joy:

lazzen_plugin.conf 这个配置文件也发我一下


把这行代码删了再试下

这个我做实验用的,他会一直循环调用,就是不启用

本来还有几行日志代码,我给删了,这个忘记删除了