Catalyst全局moose哈希返回MIME类型httpd / unix-directory

时间:2013-03-14 05:13:24

标签: perl hash mime-types moose catalyst

我正在尝试在my_app.pm的{​​{3}}应用中创建Moose哈希,以便我可以全局访问:

has 'hash' => ( 
    is => 'rw', 
    isa => 'Hashref'
);

但是,只要我尝试添加默认值:

has 'hash' => ( 
    is => 'rw', 
    isa => 'Hashref',
    default => sub { { 
        'key' => 'val',
      }
    },
);

然后我在Chrome开发人员工具控制台中收到此消息:

Resource interpreted as Document but transferred with MIME type httpd/unix-directory

每当我尝试加载页面时然后我的页面无法正确加载并尝试强制我在加载页面时下载空文件。是否无法在Moose中使用my_app.pm哈希默认值?有谁知道我做错了什么?谢谢!

2 个答案:

答案 0 :(得分:0)

  1. 您的应用设置方式存在某些问题;当你看到错误页面时,你会看到上面的错误。

  2. 您的默认值无效。 sub { 'key' => 'val' }不返回hashref;它返回两个项目的列表('key'和'val')。请改为default => sub { +{ 'key' => 'val' } }

答案 1 :(得分:0)

所以我弄清楚我做错了什么,不幸的是这是'doh'时刻之一:)

Moose属性定义为哈希时,您必须这样做:

has 'hash' => ( 
    is => 'rw', 
    isa => 'HashRef'
);

我不小心拼错了HashRef并使用了Hashref。感谢您的帮助! :)