簡體   English   中英

運行mix deps.get引發:erlang.binary_to_atom參數錯誤

[英]Running mix deps.get throws :erlang.binary_to_atom argument error

我正在構建一個Nerves項目,並嘗試按照此處的說明使用主Nerves應用程序來構建我的自定義固件。 我已經用Phoenix設置了一個UI項目,並將自定義圖像放在項目目錄下它自己的目錄中。 Nerves主項目在這里 ,自定義固件在這里,我將MIX_TARGET設置為與自定義映像名稱(rpi0_wiringPi)相同,並且在運行時:

mix deps.get

我得到錯誤

* (ArgumentError) argument error
:erlang.binary_to_atom(nil, :utf8)
(stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
(stdlib) erl_eval.erl:888: :erl_eval.expr_list/6
(stdlib) erl_eval.erl:240: :erl_eval.expr/5
(stdlib) erl_eval.erl:232: :erl_eval.expr/5
(stdlib) erl_eval.erl:233: :erl_eval.expr/5
(stdlib) erl_eval.erl:888: :erl_eval.expr_list/6
(stdlib) erl_eval.erl:240: :erl_eval.expr/5

現在,我對該目錄中的混合所做的任何操作都會引發相同的錯誤,包括混合幫助。 那會告訴我該項目的mix.exs文件中有什么不對勁,但它在下面,對我來說似乎還不錯

defmodule Fw.MixProject do
  use Mix.Project

  @target System.get_env("MIX_TARGET") || "host"

  def project do
    [
      app: :fw,
      version: "0.1.0",
      elixir: "~> 1.4",
      target: @target,
      archives: [nerves_bootstrap: "~> 1.0"],
      deps_path: "deps/#{@target}",
      build_path: "_build/#{@target}",
      lockfile: "mix.lock.#{@target}",
      start_permanent: Mix.env() == :prod,
      aliases: [loadconfig: [&bootstrap/1]],
      deps: deps()
    ]
  end

  # Starting nerves_bootstrap adds the required aliases to Mix.Project.config()
  # Aliases are only added if MIX_TARGET is set.
  def bootstrap(args) do
    Application.start(:nerves_bootstrap)
    Mix.Task.run("loadconfig", args)
  end

  # Run "mix help compile.app" to learn about applications.
  def application do
    [
    mod: {Fw.Application, []},
    extra_applications: [:logger, :runtime_tools]
    ]
  end

  # Run "mix help deps" to learn about dependencies.
  defp deps do
    [
      {:nerves, "~> 1.3", runtime: false},
      {:nerves_network, "~> 0.3"},
      {:ui, path: "../ui"},
      {:shoehorn, "~> 0.2"}
    ] ++ deps(@target)
  end

  # Specify target specific dependencies
  defp deps("host"), do: []

  defp deps(target) do
    [
      {:nerves_runtime, "~> 0.8"}
    ] ++ system(target)
  end

  defp system("rpi"), do: [{:nerves_system_rpi, "~> 1.0", runtime: false}]
  defp system("rpi0"), do: [{:nerves_system_rpi0, "~> 1.0", runtime: false}]
  defp system("rpi0_wiringPi"), do: [{:nerves_system_rpi0_wiringPi, path: "../nerves_system_rpi0_wiringPi", runtime: false}]
  defp system("rpi2"), do: [{:nerves_system_rpi2, "~> 1.0", runtime: false}]
  defp system("rpi3"), do: [{:nerves_system_rpi3, "~> 1.0", runtime: false}]
  defp system("bbb"), do: [{:nerves_system_bbb, "~> 1.0", runtime: false}]
  defp system("ev3"), do: [{:nerves_system_ev3, "~> 1.0", runtime: false}]
  defp system("qemu_arm"), do: [{:nerves_system_qemu_arm, "~> 1.0", runtime: false}]
  defp system("x86_64"), do: [{:nerves_system_x86_64, "~> 1.0", runtime: false}]
  defp system(target), do: Mix.raise("Unknown MIX_TARGET: #{target}")
end

這是目錄結構:

clicky
  fw
  ui
  nerves_system_rpi0_wiringPi

由於混合無論如何都會引發錯誤,因此我無法從中獲得任何幫助。 有沒有一種方法可以讓混合記錄日志記錄正在執行的操作或其他可以幫助我解決問題的方法?

我也遇到了這個錯誤。 原來不是mix.exs的問題。 我忽略了在config.exs中設置Nerves網絡環境變量(NERVES_NETWORK_SSID,NERVES_NETWORK_PSK和NERVES_NETWORK_MGMT)。 一旦我修復了“ mix deps.get”,它就會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM