Translate

2021년 5월 20일 목요일

[React] TypeError: Cannot read property 'apply' of underfined (Redux DevTools 미설치 이슈)

 


증상 및 문제


증상1
 - 개발모드에서만 해당 증상이 나타나며, npm build 후 빌드된 소스에서는 증상이 발생하지 않는다.


증상2
 - 내 PC 에서 프로젝트 셋팅 후 구동 시 문제없이 동작이 된다.
 - 동료 PC 에서 소스를 내려받아 구동 시 Chrome 브라우저에서 아래와 같이 보여진다.



1004lucifer


이유 및 해결방안

TypeError: Cannot read property 'apply' of underfined 라는 메시지는 꼭 여기서만 나타나는게 아니라 다른 곳에서도 나오겠지만..

현재의 상황에서는 코드에서 개발환경인경우 'redux-devtools-extension' 을 사용하도록 셋팅한 경우에 위와 같은 증상이 발생한다.





Redux DevTools 설치하면 정상적으로 보여지게 된다.

https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?utm_source=chrome-ntp-icon





2021년 5월 16일 일요일

[React] ERROR - readonly keyword (Parsing error: Unexpected token, expected ":")

 


문제

yarn create react-app typescript-readonly_keyword-error --template typescript

위 명령어로 Typescript 형식의 React 프로젝트를 생성 후

프로젝트 셋팅 중 아래와 같은 에러가 나면서 페이지가 뜨지 않는 문제가 발생했다.

(아마 readonly 키워드를 변수명으로 잘못 인지해서 발생하는 에러로 보여진다.)



Failed to compile.

src\App.tsx
  Line 6:12:  Parsing error: Unexpected token, expected ":"

  5 |
  6 | export interface IRootState {
> 7 |   readonly loadingBar: any;
    |            ^
  8 | }
  9 |
  10| function App() {




원인 및 해결방법

- 아마 같은 증상이지만 원인이 다를 수 있다. 나의 경우에는 아래와 같았다.


package.json 파일을 수정하다가 eslintConfig 항목을 빠트렸더니 위와 같은 오류가 발생했으며, create-react-app 으로 처음 만들었을 때와 같이 eslintConfig 항목을 넣어줬더니 문제가 없어졌다.

https://github.com/1004lucifer/Test-JavaScript/blob/20ae946813d16fd6327ce5c9fcf5caa34a38cd95/React/TroubleShooting/typescript-readonly_keyword-error/package_origin.json#L25


아래의 GitHub 프로젝트를 수행하여 이슈를 직접 확인해볼 수 있다.
 - https://github.com/1004lucifer/Test-JavaScript/tree/master/React/TroubleShooting/typescript-readonly_keyword-error



2021년 3월 16일 화요일

[IntelliJ] 톰캣 debug 모드로 기동 시 Address already in use: NET_Bind 이슈 해결방법

 


증상

 - (해당 포트가 어디에도 쓰이지는 않는것 같지만) 포트충돌이 난다고 톰캣이 기동되지 않는다.

 - HTTP, JMX 포트가 아닌 54397 과 같은 큰 숫자의 포트이다.



해결방법

1. Run/Debug Configurations
2. 해당 톰캣 선택
3. Startup/Connection 선택
4. Debug 선택
5. Port를 1씩 줄이거나 늘리면서 바꿔보면서 기동을 해본다.




=== 2021.08.19 내용 업데이트 ===

PS.

만일 위와같이 포트를 변경하면서 시도를 해봐도 해결이 되지 않을 때 winnat를 재기동 하면 된다.




참고
 - https://youtrack.jetbrains.com/issue/IDEA-226958
 - https://stackoverflow.com/questions/61344554/tomcat-debug-error-unable-to-open-debugger-port-127-0-0-163199-java-net-bin


[FCM] 푸시 발송 오류 원인 - Error getting access token for service account / Connection reset




증상

FCM Push 발송 시 아래와 같은 오류가 발생하면서 푸시발송이 정상적으로 되지 않았다.
(어쩔때는 정상적으로 되다가 안되다가 하는 증상)



원인

(나의 경우에는 코드에 문제가 없었지만)
회사의 네트워크에 보안설정에 의해 푸시 발송이 정상적으로 되지 않았다.
모바일 기기의 테더링으로 같은코드를 수행 시 정상적으로 푸시발송이 되는것을 확인 할 수 있었다.





com.google.firebase.messaging.FirebaseMessagingException: Unknown error while making a remote service call: Error getting access token for service account: java.net.SocketException: Connection reset

at com.google.firebase.messaging.FirebaseMessagingException.withMessagingErrorCode(FirebaseMessagingException.java:47)
at com.google.firebase.messaging.FirebaseMessagingClientImpl$MessagingErrorHandler.createException(FirebaseMessagingClientImpl.java:293)
at com.google.firebase.messaging.FirebaseMessagingClientImpl$MessagingErrorHandler.createException(FirebaseMessagingClientImpl.java:282)
at com.google.firebase.internal.AbstractHttpErrorHandler.handleIOException(AbstractHttpErrorHandler.java:63)
at com.google.firebase.internal.ErrorHandlingHttpClient.createHttpRequest(ErrorHandlingHttpClient.java:141)
at com.google.firebase.internal.ErrorHandlingHttpClient.send(ErrorHandlingHttpClient.java:92)
at com.google.firebase.internal.ErrorHandlingHttpClient.sendAndParse(ErrorHandlingHttpClient.java:72)
at com.google.firebase.messaging.FirebaseMessagingClientImpl.sendSingleRequest(FirebaseMessagingClientImpl.java:127)
at com.google.firebase.messaging.FirebaseMessagingClientImpl.send(FirebaseMessagingClientImpl.java:113)
at com.google.firebase.messaging.FirebaseMessaging$1.execute(FirebaseMessaging.java:135)
at com.google.firebase.messaging.FirebaseMessaging$1.execute(FirebaseMessaging.java:132)
at com.google.firebase.internal.CallableOperation.call(CallableOperation.java:36)
at com.google.firebase.messaging.FirebaseMessaging.send(FirebaseMessaging.java:102)
at com.google.firebase.messaging.FirebaseMessaging.send(FirebaseMessaging.java:86)
at kr.co._1004lucifer.util.FcmUtil.send(FcmUtil.java:47)
at kr.co._1004lucifer.util.FcmUtilTest.send(FcmUtilTest.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)
Caused by: java.io.IOException: Error getting access token for service account: java.net.SocketException: Connection reset
at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:444)
at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:157)
at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:145)
at com.google.auth.oauth2.ServiceAccountCredentials.getRequestMetadata(ServiceAccountCredentials.java:603)
at com.google.auth.http.HttpCredentialsAdapter.initialize(HttpCredentialsAdapter.java:91)
at com.google.firebase.internal.FirebaseRequestInitializer.initialize(FirebaseRequestInitializer.java:55)
at com.google.api.client.http.HttpRequestFactory.buildRequest(HttpRequestFactory.java:88)
at com.google.firebase.internal.HttpRequestInfo.newHttpRequest(HttpRequestInfo.java:105)
at com.google.firebase.internal.ErrorHandlingHttpClient.createHttpRequest(ErrorHandlingHttpClient.java:137)
... 39 more
Caused by: javax.net.ssl.SSLException: java.net.SocketException: Connection reset
at sun.security.ssl.Alert.createSSLException(Alert.java:127)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:353)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:296)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:291)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:141)
at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1279)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1188)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:401)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:587)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1340)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1315)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:264)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:113)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:84)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1012)
at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:441)
... 47 more
Suppressed: java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
at sun.security.ssl.SSLSocketOutputRecord.encodeAlert(SSLSocketOutputRecord.java:83)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:384)
... 63 more
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:475)
at sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:469)
at sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:159)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:110)
... 60 more