0

我正在寻找有关如何在 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 

而不是上面的。(修复在这里找到)

这有效,程序执行但抛出错误:

内核 PID 终止(应用程序控制器)无法启动子“elixir.helloworld.endpoint”

感谢您到目前为止的帮助,很抱歉,因为这是我第一次做这部分。

注意:带有exrm程序的 Windows 10 正常运行mix phoenix.server

有没有人一步一步地在 Windows 上启动 elixir 程序或服务?


编辑:在以下期间收到警告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
4

1 回答 1

1

还有一些建议:

  1. 尝试最新版本的 EXRM(它是 1.08,而您已经获得了 1.03)。顺便说一句,请仔细检查您的 EXRM 版本,因为如果它实际上不是 1.08 并且您误读了它,我会有点惊讶。
  2. 创建一个小/简单的应用程序并使用未修改的 批处理文件 尝试控制台。
  3. 卸载 Erlang 并将其安装到没有空格的路径中(例如 c:\usr\bin\erlang)。是的,我知道这不是 Windows 的标准,但带有空格的目录名称似乎总是会导致问题。
  4. 查找 erl_crash.dump 文件。如果您找到了,请通过启动 iex shell 并键入:observer.start()在观察者中来使用观察者,从菜单中选择文件->检查崩溃转储。这也可以帮助您找出问题所在。
  5. 如果您可以找出批处理文件构建的确切命令行,请尝试直接运行命令行并查看会发生什么。它的行为不太可能有任何不同,但如果有其他消息被隐藏而不是回显,您可以通过这种方式看到它们。
于 2017-02-23T01:20:27.287 回答