Ошибка при компиляции нового пользовательского модуля в ejabberd

Я пытаюсь скомпилировать пользовательский модуль и постоянно получаю эту ошибку

`undefined parse transform 'lager_transform'`

Я перепробовал почти все предложения, касающиеся этой ошибки, но не смог ничего найти. Я использую ejabberd-18.01 и otp 20

1 ответ

Решение

Я думаю, что вы включаете файл logger.hrl. Когда компилятор находит -compile([{parse_transform, lager_transform}]). здесь это вызывает lager_transform:parse_transform/2 для создания нового модуля. lager_transform получает исходный код (Erlang AST или Абстрактное синтаксическое дерево) и создает новый AST, который содержит некоторый код для создания информации журнала.
Проблема в том, что ваш компилятор не может найти lager_transform.beam для запуска этой функции. Вы можете дать путь lager компилятору используя -pa или же -pz флаг:

# I included `logger.hrl`
$ erlc test.erl
test.erl: undefined parse transform 'lager_transform'

# Find path of lager's ebin in your system for below command
$ erlc -pa /opt/ejabberd-18.01/lib/lager-3.2.1/ebin/ test.erl
# done
Другие вопросы по тегам