Эликсир - модуль не был скомпилирован с документами
Я только начал изучать эликсир вчера. У меня есть файл User.exs. Это выглядит так:
defmodule User do
@moduledoc """
Defines the user struct and functions to handle users.
"""
# functions and stuff go here...
end
Когда я бегу iex
вот что происходит, когда я пытаюсь просмотреть документы:
iex(1)> c "user.exs"
[User]
iex(2)> h User
User was not compiled with docs
Есть идеи?
2 ответа
c("user.exs")
компилирует файл в память и не записывает байт-код (файл.beam) на диск, пока h/1
в настоящее время (подробности ниже) файл луча должен присутствовать на диске для работы. Ты можешь сделать c
сохранить сгенерированный байт-код в текущем каталоге, который сделает h/1
работать с c("user.exs", ".")
:
$ ls
user.exs
$ cat user.exs
defmodule User do
@moduledoc """
Defines the user struct and functions to handle users.
"""
end
$ iex
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.4.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> c("user.exs", ".")
[User]
iex(2)> h User
User
Defines the user struct and functions to handle users.
iex(3)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
^C
$ ls
Elixir.User.beam user.exs
h/1
опирается на Code.get_docs/2
чтобы получить документацию, которая вызывает :code.get_object_code/1
на модуле. :code.get_object_code/1
в соответствии с его документацией"Ищет путь к коду для объектного кода модуля Module. Возвращает {Module, Binary, Filename}
в случае успеха, в противном случае error
".
Причина в том, что *.exs
файлы для сценариев, и они не будут скомпилированы и *.ex
файлы будут скомпилированы с помощью elixir.
Если у вас нет смешанного проекта и user.ex
файл только потом попробуй elixirc user.ex
и после этого начать iex
и введите h User
,
Если у вас есть смешанный проект, запустите iex, как в командной строке: iex -S mix
Это загрузит ваш проект и скомпилирует все *.ex
файлы. Сейчас типа h User
,
Я пробовал оба пути сам и оба работают.
Смотрите также: