【发布时间】:2017-01-12 02:11:08
【问题描述】:
我在lib/ 中创建了一个模块,更具体地说是lib/my_namespace/test_module.exs。
这就是其中定义的全部内容:
defmodule MyNamespace.TestModule do
def test do
"This is a test"
end
end
在 Phoenix 控制器中调用此模块的 test() 函数会导致错误。
** (UndefinedFunctionError) function MyNamespace.TestModule.test/0 is undefined (module MyNamespace.TestModule is not available)
MyNamespace.TestModule.test()
根据Elixir 1.2.0 Changelog,据我了解,Elixir 旨在重新加载lib/ 目录中的代码,所以我的假设是我不需要做任何其他事情。
我显然错了,我自己的研究并没有产生任何有希望的结果。我收集到的唯一一件事是我的模块没有进入?loadpath?而且我不确定要更改什么,所以它在加载路径上。
有人能帮我指出我应该阅读哪些文档的方向吗?
提前致谢。
【问题讨论】:
-
尝试将文件从
.exs重命名为.ex。 -
谢谢@Dogbert。那行得通。你知道我在哪里可以阅读到任何文档中的这个约定吗?如果是这样,你能和我分享一下吗?另外,请提交答案,以便我将其标记为正确。再次感谢!
-
不幸的是,我找不到比 elixir-lang.org/getting-started/modules.html#scripted-mode 更好的东西(它没有提到
mix不编译 .exs 文件)。
标签: module elixir phoenix-framework autoload load-path