React CASL条件不在生产模式下工作-Reactjs

React CASL条件不在生产模式下工作-Reactjs,reactjs,casl,Reactjs,Casl,我有一个can功能与条件。在条件满足时启用撰写消息。这在开发模式下工作得很好,但是当我尝试在生产模式下运行它时,can方法总是给我false can('compose', 'Ticket', { phase: 'Tier 3', }); 但在生产模式下,canCompose总是返回false。 我是否必须更改配置中的任何内容?是的,在生产模式下,所有类名和函数名都被损坏(即缩小)。这就是CASL无法正确确定主题类型的原因 这是用英文写的 因此,您有两种选择: 定义和检查每种类型的能力时,

我有一个can功能与条件。在条件满足时启用撰写消息。这在开发模式下工作得很好,但是当我尝试在生产模式下运行它时,can方法总是给我
false

can('compose', 'Ticket', {
   phase: 'Tier 3',
});
但在生产模式下,canCompose总是返回
false

我是否必须更改配置中的任何内容?

是的,在生产模式下,所有类名和函数名都被损坏(即缩小)。这就是CASL无法正确确定主题类型的原因

这是用英文写的

因此,您有两种选择:

  • 定义和检查每种类型的能力时,使用类而不是字符串

    class票证{}
    can('compose',Ticket,{…});
    能力。可以(“撰写”,票证);
    能力。可以('compose',新票(…)
    
  • 或者在类上定义静态
    modelName
    属性:

    舱单{
    静态模型名='Ticket'
    }
    can('compose','Ticket',{…});
    能力。可以('compose','Ticket');
    能力。可以('compose',新票(…)
    

  • 谢谢@Sergii Stotskyi,这个解决方案对我有效。我选择了第二种选择。多谢了,老兄。第二种方法很有魅力!
    const ticket = new Ticket({ phase: 'Tier 3' })
    const canCompose = (ability.can('compose', ticket));