Ошибка при компиляции нового пользовательского модуля в 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