【发布时间】:2023-03-29 19:53:01
【问题描述】:
我正在寻找有关如何在 Windows 上部署和运行 elixir/phoenix 程序的建议。
我使用过 Distillery,但它与 mix release 一起使用,但没有可用于命令提示符的命令。每个建议的命令,例如
_build/dev.../<program> console
产生错误not a recognized internal or external command。
我也使用过exrm,但是,即使在修改.bat 文件以删除路径中不需要的// 之后,它也会在erlang 转储文件中产生kernel PID terminated 错误。
版本:
- 灵药:1.4.2
- 二郎:19.2 [erts-8.2]
- Exrm: 1.0.3
.bat 的编辑是:
<app>/rel/<app>/releases/version/app.bat and
<app>/rel/<app>/bin/app.bat
这是因为它试图执行:
<app>/rel/<app>/releases//app.bat
而不是上面的。 (修复在这里找到)
这有效,程序执行但抛出错误:
kernel PID Terminated (application controller) failed to start child 'elixir.helloworld.endpoint'
感谢到目前为止的帮助,很抱歉,这是我第一次做这部分。
注意:带有exrm 程序的Windows 10 使用mix phoenix.server 可以正常运行
有没有人一步一步让一个 elixir 程序或服务在 Windows 上启动?
编辑:在mix release期间收到警告:
variable deps does not exist and is being expanded to deps()
在尝试开始的过程中:
failed to open file <app>/rel/<app>releases/version/conform
已编辑<app>/rel/<app>/bin/app.bat:
将"" 添加到%start_erl%
@set start_erl=%release_root_dir%\releases\start_erl.data
@for /f "delims=" %%i in ('type "%start_erl%"') do
@(set start_erl_data=%%i)
编辑<app>/rel/<app>/releases/version/app.bat:
将"" 添加到%start_erl%
:: Discover the release root directory from the directory of this script
@set script_dir=%~dp0
@for %%A in ("%script_dir%\..\..") do @(set release_root_dir=%%~fA)
@set start_erl=%release_root_dir%\releases\start_erl.data
@for /f "delims=" %%i in ('type "%start_erl%"') do
@(set start_erl_data=%%i)
将"" 添加到%werl%
:: Start a console
:console
@call :generate_config
@start "%rel_name% console" "%werl%" -config "%sys_config%" ^
-boot "%boot_script%" -boot_var ERTS_LIB_DIR "%erts_dir%"/lib ^
-env ERL_LIBS "%release_root_dir%"/lib ^
-pa "%release_root_dir%"/lib "%release_root_dir%"/lib/consolidated ^
-args_file "%vm_args%" ^
-user Elixir.IEx.CLI -extra --no-halt +iex
【问题讨论】:
-
目前 Windows 不支持 Distillery。我们正在努力。您在 Exrm 中编辑了哪些 .bat 文件以及您是如何编辑它们的?我根本不记得那些批处理文件中有任何“不需要的//”,所以我不知道你的意思。我们需要确切的细节来解决这个问题。如果你有 Erlang,Exrm 应该可以工作,并且 Elixir 是不包含空格的路径。
-
这里的答案:stackoverflow.com/questions/30687781/… 涵盖了如何启动 Elixir 应用程序,它应该可以在 Windows 以及任何其他受支持的操作系统上运行。
-
感谢您的回复;
-
您可能希望将这些详细信息添加到上述问题中。
-
尝试从命令提示符
iex --werl运行此命令,如果没有出现 werl shell,那就是您的问题。这只是对可能发生的事情的猜测。