1

我是 docker 和 erlang 的新手。我已经在我的 windows 机器上安装了 docker 和 VSCode,我想学习在容器中开发 erlang,所以我创建了 Dockerfile:

FROM erlang:latest

WORKDIR /project

COPY . .

和带有 devcontainer.json 文件的 .devcontainer 目录:

{
    "name": "Erlang dev container",
    "context": ".",
    "dockerFile": "Dockerfile",
    "settings": { 
        "terminal.integrated.shell.linux": "/bin/bash"
    },
    "extensions": []
}

在容器中打开我的项目文件夹后,我可以发出 bash 命令并且可以启动 erl 但是当我尝试让 rebar 测试我的代码时

rebar eunit

或者

rebar3 eunit

我得到错误:

can't find include lib "eunit/lib/eunit.hrl"

我做错了什么?erlang:latest 图像是否应该用于 erlang 开发?如何解决?

4

1 回答 1

1

为了使用eunit,当我在 shell(不使用 docker)中运行 erlang 程序时,我使用以下-include_lib指令:

-include_lib("eunit/include/eunit.hrl").

您似乎正在使用不同的路径:

 eunit/lib/eunit.hrl

在容器中我可以发出 bash 命令

然后使用 bash 命令搜索文件eunit.hrl

您可以随时复制文件eunit.hrl并将其放在rebarsrc项目的目录中,然后在您的模块中使用:

-include("eunit.hrl")

我是 docker 和 erlang 的新手。

如果最坏的情况发生,不要担心 eunit。在你需要一个测试框架之前,有很多关于 erlang 的知识需要学习。

于 2020-11-23T15:52:03.570 回答