在制作中我有这个:
use Mix.Config
config :my_app, MyApp.Endpoint,
secret_key_base: System.get_env("MYAPP_SECRET_KEY_BASE")
该值在/ etc / environment中设置并且足够长,我是从“mix phoenix.gen.secret”创建的。但是,它仍然会抛出错误:
** (exit) an exception was raised:
** (ArgumentError) cookie store expects conn.secret_key_base to be at least 64 bytes
(plug) lib/plug/session/cookie.ex:159: Plug.Session.COOKIE.validate_secret_key_base/1
(plug) lib/plug/session/cookie.ex:152: Plug.Session.COOKIE.derive/3
(plug) lib/plug/session/cookie.ex:103: Plug.Session.COOKIE.put/4
(plug) lib/plug/session.ex:92: anonymous fn/3 in Plug.Session.before_send/2
(elixir) lib/enum.ex:1755: Enum."-reduce/3-lists^foldl/2-0-"/3
(plug) lib/plug/conn.ex:961: Plug.Conn.run_before_send/2
(plug) lib/plug/conn.ex:392: Plug.Conn.send_resp/1
(my_app) web/controllers/home_controller.ex:1: MyApp.HomeController.action/2
答案 0 :(得分:0)
是否可以在编译应用程序之前设置该值?
如果在配置中使用System.get_env("...")
,则在编译时检索此值。如果按以下顺序执行操作,则可能无法使用您期望的环境变量值:
您可以通过运行mix compile --force
来验证这是否是问题。
如果按以下顺序执行步骤,则将使用正确的环境变量。