React-native + Mobx inject 데코레이터 오류


(Jong Chan Park) #1

리액트 네이티브와 mobx, mobx-react 모두 최신버전으로 설치후 @inject 데코레이터를 사용하려고 했는데 아래와 같은 오류가 납니다

Expected a constructor

혹시 이런 현상을 해결해 보신분 계신가요?


(강승훈) #2

이거 저도 저런 에러 봤습니다.
mobx-react가 6.0.2일때 에러가 났었는데, 5버전때로 낮추니 해결됬습니다.


(Jong Chan Park) #4

오오 답변 감사합니다

일단 저도 버전을 낮춰봐야겠네요


(Jeff Kang) #5

Babel 에 decorator 지원 플러그인을 추가하시면 됩니다.

React Native 사용하시고 metro-react-native-babel-preset > 0.54
기준으로 babel 설정 부분에 플러그인 추가해보세요.

decorator 플러그인은 설치하셔야 합니다.

yarn -D add @babel/plugin-proposal-decorators

plugin-proposal-class-properties 같은 경우 0.54 버전 기준으로 이미 dependencies에 포함되어 있으므로 따로 설치해주시지 않아도 괜찮습니다.

{
    "plugins": [
        ["@babel/plugin-proposal-decorators", { "legacy": true}],
        ["@babel/plugin-proposal-class-properties", { "loose": true}]
    ]
}

(Jong Chan Park) #6

답변 감사합니다.

해당 바벨 플러그인들은 이미 설치된 상태였습니다. 아마도… 설치가 안되어있었다면 syntax 오류가 났겠죠?

일단은 mobx-react 를 5버전대로 다운그레이드 하여 해결했습니다.


(Jeff Kang) #7

저도 동일한 증상이 나오는군요. 아래 관련된 이슈를 첨부합니다.

Using HOC with Wrapper Forwarding refs via es7 Decorators will throw **Expected a constructor** error.