본문 바로가기
Back Side/etc

[zipkin] TypeError: fetchImpl is not a function fix

by developerBeluga 2024. 1. 17.
728x90
반응형

 

 

 

 

현상

zipkin을 연결한 서비스 A가 로컬에서 npm start을 할 경우 잘 된다. 

하지만 Docker로 빌드해서 올리면 서비스 A가 죽는다.

 

도대체 왜 그럴까?

겨우 찾아낸 오류 문구는 TypeError: fetchImpl is not a function다.

 

https://github.com/openzipkin/zipkin-js/issues/493

 

node_modules/zipkin-transport-http/src/HttpLogger.js. · Issue #493 · openzipkin/zipkin-js

Running a Node application works fine for sending traces. However if I compile this to a minified file in Webpack, we lose the 'this' context after the interval when trying to do the fetch call for...

github.com

 

간단 zipkin 이슈가 있다.

webpack에 문제가 있다는 것을 알았다.

 

 

해결

// before
externals: ["mongodb-client-encryption", "aws4", "digest-fetch"],

// atfer
externals: [nodeExternals(), "mongodb-client-encryption", "aws4", "digest-fetch"],

webpack.cofig.js에서 extrnals 설정에 nodeExternals()을 넣어줬다.

nodeExternals() 함수는 node_modules 폴더 내의 모든 모듈을 webpack 번들에서 제외시킨다.

이렇게 하면 번들의 크기가 줄고 불필요한 위존성 문제를 방지할 수 있다. 

 

이렇게 해결 되었다는 의미는 원래의 설정이 특정 모듈을 올바르게 처리하지 못했다는 걸 뜻한다.

즉, 특정 외부 모듈들이 nodejs 환경에서 사용되기 위해 올바르게 설정되지 않았기 때문에 발생한거다.

externals 설정을 조정함으로써 모듈이 적절하게 처리되어 문제가 해결됐다.

 

 

 

 

 

728x90
반응형

댓글