Erlang escript:异常错误:右侧值{error,enoint}‏;

Erlang escript:异常错误:右侧值{error,enoint}‏;,erlang,erl,Erlang,Erl,我在Windows 7(64位)上尝试使用MinGW/MSYS构建Erlang RabbitMQ插件时遇到上述错误。我使用的是ErlangV5.10.3(32位)。我能够在我的系统上运行RabbitMQ Fujitsu@Notebook /d/RabbitMQ/build-source/rabbitmq-public-umbrella/presence-exchange-master $ make [elided] generate deps escript: exception error:

我在Windows 7(64位)上尝试使用MinGW/MSYS构建Erlang RabbitMQ插件时遇到上述错误。我使用的是ErlangV5.10.3(32位)。我能够在我的系统上运行RabbitMQ

Fujitsu@Notebook /d/RabbitMQ/build-source/rabbitmq-public-umbrella/presence-exchange-master
$ make
[elided] generate deps
escript: exception error: no match of right hand side value {error,enoent}
  in function  generate_deps__escript__1389__793192__493000:detect_deps/5 (d:/RabbitMQ/build-source/rabbitmq-public-umbrella/generate_deps, line 40)
  in call from generate_deps__escript__1389__793192__493000:'-main/1-fun-0-'/6 (d:/RabbitMQ/build-source/rabbitmq-public-umbrella/generate_deps, line 19)
  in call from lists:foldl/3 (lists.erl, line 1248)
  in call from generate_deps__escript__1389__793192__493000:main/1 (d:/RabbitMQ/build-source/rabbitmq-public-umbrella/generate_deps, line 17)
  in call from escript:run/2 (escript.erl, line 747)
  in call from escript:start/1 (escript.erl, line 277)
  in call from init:start_it/1 (init.erl, line 1054)
  in call from init:start_em/1 (init.erl, line 1034)
我已经在pastebin上发布了完整的错误- generate_deps的完整代码可在此处找到-

另外,我也尝试过使用CYGWIN,但它返回另一个错误-escript:无法打开文件:/home/Fujitsu/rabbitmq/build-source/rabbitmq-public-umbrarel/generate\u-deps

编辑1

CYGWIN返回:

$ make
[elided] generate deps
escript: Failed to open file: /cygdrive/d/RabbitMQ/build-source/rabbitmq-public-umbrella/generate_deps
[elided] generate deps
escript: Failed to open file: /cygdrive/d/RabbitMQ/build-source/rabbitmq-public-umbrella/generate_deps
make: *** No rule to make target 'build/deps.mk', needed by 'ebin/presence_exchange.beam'.  Stop.
但是,我可以使用head命令打开文件

Fujitsu@Notebook /cygdrive/d/RabbitMQ/build-source/rabbitmq-public-umbrella/presence-exchange-master
$ head /cygdrive/d/RabbitMQ/build-source/rabbitmq-public-umbrella/generate_deps
#!/usr/bin/env escript
%% -*- erlang -*-
-mode(compile).

%% We expect the list of Erlang source and header files to arrive on
%% stdin, with the entries colon-separated.
main([TargetFile, EbinDir]) ->
    ErlsAndHrls = [ string:strip(S,left) ||
                      S <- string:tokens(io:get_line(""), ":\n")],
    ErlFiles = [F || F <- ErlsAndHrls, lists:suffix(".erl", F)],
Fujitsu@Notebook/cygdrive/d/RabbitMQ/build-source/RabbitMQ-public-伞形结构/presence-exchange-master
$head/cygdrive/d/RabbitMQ/build source/RabbitMQ public伞形结构/generate_deps
#!/usr/bin/env描述
%%-*-erlang-*-
-模式(编译)。
%%我们希望Erlang源文件和头文件的列表能够在
%%stdin,条目以冒号分隔。
main([TargetFile,EbinDir])->
ErlsAndHrls=[字符串:带(S,左)||

S这很可能是因为它找不到您试图打开的文件,这就是POSIX
eNONT
错误的意思。当您使用cygwin时,这一点更加明确。erlang
badmatch
错误来自第23行:

{ok, Hdl} = file:open(TargetFile, [write, delayed_write]),
您尝试打开文件并在
{ok,Hld}
上进行匹配。但是
文件:打开
在找不到文件时返回
{error,enoint}
,这会导致匹配失败并生成erlang错误

编辑:


在我看来,问题在于它试图写入的文件。是否允许在该目录中写入?如果该文件已存在,是否允许打开该文件进行写入?

谢谢,但我可以使用head命令打开该文件。请参见上面的编辑1。原因可能是什么?是否确实要打开同一文件?另请参见
head
在代码中尝试打开文件进行写入时打开文件进行读取。文件具有什么访问模式,文件类型是什么?是的,它是同一个文件。ls-l返回“-rwxr-xr-x 1 Fujitsu None 2666 Jan 15 13:59 generate_deps”。我还尝试了chmod 777。generate_deps是某种bash文件,您可以在这里看到代码-