如所记录的那样,无法使用cro命令行工具

时间:2019-07-15 22:30:47

标签: windows perl6 cro

我正在Windows 7上运行Rakudo Star 2019.03.1,Cro已由zef安装。在Getting Started上的Cro website部分之后,以下应该可以工作:

  

cro stub命令为您生成存根服务,以开始使用   更快,默认值更好。在这里我们用它来创建一个   简单的HTTP服务,ID为hello,位于hello目录中:

     

cro stub http hello hello

...实际上确实有效,它会为项目生成许多文件,包括.cro.yml文件,我认为这是该服务的中央描述文件。但是,如果我尝试遵循文档并运行cro run(我假设是从hello目录内部):

  

cro run命令将启动您的服务(并自动重新启动   服务,如果您更改文件):

     

cro run

...服务未启动,但出现cro错误:

A react block:
  in sub run-services at C:\rakudo\share\perl6\site\sources\709F4B18755ADE6922C88B8C44A0930A5DDD77C9 (Cro::Tools::CLI) line 227
  in sub MAIN at C:\rakudo\share\perl6\site\sources\709F4B18755ADE6922C88B8C44A0930A5DDD77C9 (Cro::Tools::CLI) line 199
  in block <unit> at C:\rakudo\share\perl6\site\resources\C1E87B0F084684C12CD87240AE4C12E746174570 line 1
  in sub MAIN at C:\rakudo\share\perl6\site\bin\cro line 3
  in block <unit> at C:\rakudo\share\perl6\site\bin\cro line 1

Died because of the exception:
    no such file or directory
      in any  at C:\rakudo\share/perl6/runtime/CORE.d.setting.moarvm line 1
      in sub run-services at C:\rakudo\share\perl6\site\sources\709F4B18755ADE6922C88B8C44A0930A5DDD77C9 (Cro::Tools::CLI) line 227
      in sub MAIN at C:\rakudo\share\perl6\site\sources\709F4B18755ADE6922C88B8C44A0930A5DDD77C9 (Cro::Tools::CLI) line 199
      in block <unit> at C:\rakudo\share\perl6\site\resources\C1E87B0F084684C12CD87240AE4C12E746174570 line 1
      in sub MAIN at C:\rakudo\share\perl6\site\bin\cro line 3
      in block <unit> at C:\rakudo\share\perl6\site\bin\cro line 1

很遗憾,此错误消息没有与我交谈。我想念什么?

1 个答案:

答案 0 :(得分:7)

更新

昨天在谷歌搜索时我不知怎么地错过了这个Cro github issue,这正是我的问题所在。我在github问题中反向链接了这个问题和答案。 fix has since been merged,并将成为Cro下一版本的一部分。为大家的快速反应做好准备!


原始答案

可以在timotimo(谢谢!)的帮助下解决此问题,

  • 建议Cro::Tools::Runner调用perl6而不是perl6.bat 对于Windows。
  • 将我指向this answer,其中包含有关更改zef安装的模块中的代码的重要信息。

因此,我转到%USERPROFILE%\.zef\store\cro-0.8.1.tar.gz\cro-0.8.1\lib\Cro\Tools,并在Runner.pm6的第269行中修补了可执行文件的名称。然后,我回到%USERPROFILE%\.zef\store\cro-0.8.1.tar.gz\cro-0.8.1并使用以下命令重新编译并安装了该模块(注意--/test会跳过测试,这会花费很多时间):

C:\...\.zef\store\cro-0.8.1.tar.gz\cro-0.8.1>zef install . --force-install --/test --verbose
The following local path candidates are already installed: .
===> Installing: cro:ver<0.8.1>
===> Install [OK] for cro:ver<0.8.1>

1 bin/ script [cro] installed to:
C:\rakudo\share\perl6\site\bin

现在,cro run向我吐出了我认为是ANSI代码的代码,但是它正在起作用:)

C:\ws\perl6\hello>cro run
←[1;32mÔûÂ Starting hello (hello)←[0m
←[32m­ƒöî Endpoint HTTP will be at http://localhost:20000/←[0m
←[32m­ƒôô hello ←[0mListening at http://localhost:20000