我创建了一个mochiweb实例
src/
|-- Makefile
|-- room.erl
|-- myserver.app
|-- myserver.erl
|-- myserver_app.erl
|-- myserver_deps.erl
|-- myserver_sup.erl
|-- myserver_web.erl
`-- uuid.erl
在myserver_web.erl
我能够访问应用程序配置
{ok, "0.0.1"} = application:get_key(vsn),
但是在room.erl
中,我无法访问应用程序配置(特别是env
列表)。
undefined = application:get_key(vsn),
主管没有启动房间,我也不想要它。
我是OTP的新手,我意识到我可能做了些蠢事,但我真的很感激任何人的帮助。
干杯!
答案 0 :(得分:3)
来自the Erlang documentation about the application:get_key/1-2 function:
返回应用程序的值 规范键应用程序的关键。 如果应用程序参数是 省略,默认为 调用过程的应用。
my_server_web.erl的应用是什么? room.erl的应用是什么?
如果指定的应用程序不是 加载,或规范键 不存在,或者进程是否正在执行 这个电话不属于任何一个 应用程序,函数返回 未定义。
是否指定了密钥?是否加载了应用程序?
关于“env”键,您可以使用the application:get_env/1 function代替。
答案 1 :(得分:1)
我明白了......答案很愚蠢,我觉得很傻,但我希望别人可以从中受益。
我实际上做的一切都正确(和所有其他答案一样),但我使用的是mochiweb的自动reloader并没有实际停止服务器。一旦我这样做,一切都很好。
DOH!遗憾!
答案 2 :(得分:0)
请改用get_key(myserver, vsn)
。请注意,需要首先加载应用程序。