В этом ответе много слоев, в зависимости от того, что вы хотите увидеть и как глубоко в кроличью нору вы хотите пройти.
Давайте начнем с простых вещей:
Ошибка, которую вы получаете, говорит мне, что вызов static_resource:resource_exists/2
привел к вызову filename:join/1
, который не удался, потому что он был передан []
в качестве аргумента.Это должно помочь вам отследить проблему.
Рекомендуемое прочтение: ошибки и исключения
Грубый способ отследить ошибки на любом языке - простодобавить печатные заявления на стратегических лекциях.В этом случае вы можете использовать io:format/2
или erlang:display/1
для отображения того, что вы хотите на консоли.Например:
...
erlang:display("I'm inside resource_exists!"),
StuffToJoin = ["foo", "bar"],
erlang:display(StuffToJoin),
filename:join(StuffToJoin),
...
Просто перезагрузите страницу, вы увидите значение, напечатанное в консоли (при условии, что соответствующая функция была вызвана как часть перезагрузки).
Если выЕсли вы хотите вручную протестировать ресурс (как в модульном тесте), вы можете сделать что-то вроде следующего:
Headers = [{"Host", "mydomain.com"}, {"user-agent", "Firefox"}],
Context = [],
Path = "/static",
ReqData = wrq:create('GET', {1,1}, Path, mochiweb_headers:from_list(Headers)),
static_resource:resource_exists(ReqData, Context)
Если вы хотите подробно изучить, как отлаживать веб-машину, вы можете прочитать это .Вы можете довольно далеко продвинуться выше, но полная трассировка может быть полезна, если вам нужно увидеть график решений.