如何使用 Phoenix 项目的 lib/ 文件夹中定义的模块?
How do I use a module defined in lib/ folder of Phoenix project?
我在 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/
目录中的代码,所以我的假设是我不需要做任何其他事情.
我显然错了,我自己的研究并没有产生任何有希望的结果。我收集到的唯一一件事是我的模块没有进入?加载路径?而且我不确定要更改什么,所以它在加载路径上。
有人可以帮我指出我应该阅读哪些文档的方向吗?
提前致谢。
.exs
files are meant for scripting not 由 mix
与项目的其余部分一起编译为字节码。如果您希望能够从您的应用程序访问其中定义的模块,您应该将 lib/my_namespace/test_module.exs
重命名为 lib/my_namespace/test_module.ex
。
我在 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/
目录中的代码,所以我的假设是我不需要做任何其他事情.
我显然错了,我自己的研究并没有产生任何有希望的结果。我收集到的唯一一件事是我的模块没有进入?加载路径?而且我不确定要更改什么,所以它在加载路径上。
有人可以帮我指出我应该阅读哪些文档的方向吗?
提前致谢。
.exs
files are meant for scripting not 由 mix
与项目的其余部分一起编译为字节码。如果您希望能够从您的应用程序访问其中定义的模块,您应该将 lib/my_namespace/test_module.exs
重命名为 lib/my_namespace/test_module.ex
。