2

我在里面创建了一个模块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?而且我不确定要更改什么,所以它在加载路径上。

有人可以伸出援助之手,并指出我应该阅读哪些文档的方向吗?

提前致谢。

4

1 回答 1

2

.exs文件用于编写脚本不会mix与项目的其余部分一起编译为字节码。如果您希望能够从您的应用程序访问其中定义的模块,您应该重命名lib/my_namespace/test_module.exs为。lib/my_namespace/test_module.ex

于 2017-01-12T11:20:11.900 回答