【问题标题】:What does this elixir compiler error mean when running this exercism exercise?运行此练习练习时,此长生不老药编译器错误意味着什么?
【发布时间】:2015-12-29 17:27:11
【问题描述】:

elixir 新手,我尝试运行"bob" exercise from exercism,在控制台上输入“elixir bob_test.exs”时收到以下错误:

** (ExUnit.DocTest.Error) 无法检索模块 Teenager 的文档。该模块未使用文档编译或无法访问其光束文件 (ex_unit) lib/ex_unit/doc_test.ex:378: ExUnit.DocTest.extract/1 (ex_unit) lib/ex_unit/doc_test.ex:202: ExUnit.DocTest.doctests/2 bob_test.exs:6: (模块)

根据一些初步研究,我认为我正在使用最新的 Elixir (1.1.1),我需要生成一个梁文件。什么是梁文件,如何生成?并且这会解决让我运行exerism elixir测试练习的问题吗?

【问题讨论】:

  • 您是否对 bob_test.exs 文件进行了任何更改?我刚刚克隆了 repo,运行 elixir bob_test.exs 并获得了 14 个通过测试,没有编译器错误。我也在运行 Elixir 1.1.1——顺便说一句,.beam 文件是 Elixir/Erlang 编译为 Erlang VM 字节码的模块
  • 事实证明,我使用的是来自 elixir kata 的过时版本的“bob”。

标签: elixir


【解决方案1】:

Elixir 将文档存储在字节码中,当使用脚本文件时,字节码直接加载到内存中而不写入磁盘,因此无法访问文档。

解决问题最简单最好的方法是使用 mix:

$ mix new bob

它将创建一个项目。将您的源代码放在“lib/bob.ex”中,您的测试在“test/bob_test.exs”中并运行mix test 将负责其余的工作。

如果你真的不想使用 mix,你可以使用elixirc bob.ex 编译文件并生成字节码(你会在当前目录中看到一个.beam)。然后elixir bob_test.exs 运行测试。注意一个是elixirc(c 表示带有 ex 扩展名的编译器),另一个是常规的 elixir 可执行文件(带有 exs 扩展名,用于脚本)。

【讨论】:

    猜你喜欢
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 2015-03-15
    • 2012-12-16
    • 2017-01-03
    相关资源
    最近更新 更多