1

我正在尝试在我的Catalyst应用程序中创建一个Moose哈希,以便我可以全局访问它:my_app.pm

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?有谁知道我做错了什么?谢谢!

4

2 回答 2

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

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

于 2013-03-14T05:49:34.087 回答
0

所以我发现我做错了什么,不幸的是,这是那些“doh”时刻之一:)

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

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

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

于 2013-03-14T19:43:04.650 回答