Skip to content

[#24] fix: type: module 제거로 Node require() 호환성 해결 - #25

Merged
kyungmi merged 4 commits into
mainfrom
fix/remove-type-module-cjs
Aug 28, 2026
Merged

[#24] fix: type: module 제거로 Node require() 호환성 해결#25
kyungmi merged 4 commits into
mainfrom
fix/remove-type-module-cjs

Conversation

@kyungmi

@kyungmi kyungmi commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

🔗 관련 이슈

✏️ 작업 내용

core / hono / koa / next 4개 패키지의 package.json 에서 "type": "module" 을 제거했습니다.

  • 원인: 패키지가 "type": "module" 인데 dist/cjs/*.js 는 CommonJS 문법(exports.X = ..., require("./x.js")) 으로 되어 있음
    • Node 가 require() 로 로드할 때 해당 파일을 ESM 으로 오해 → ReferenceError: exports is not defined 발생
    • (번호들러·tsc 산출물을 require() 로 로드하는 환경에서 재현)
  • 수정: "type": "module" 제거
    • ESM 산출물은 전부 .mjs 확장자라 확장자만으로 ESM 으로 확정 → 영향 없음
    • dist/cjs/*.jstype 필드가 없어 기본값(CommonJS) 으로 정상 해석
  • 타입 매핑 동기화: 빌드 산출물에 맞게 exports 의 types 경로를 갱신
    • import.types: ./dist/esm/index.d.ts./dist/esm/index.d.mts
    • require.types: ./dist/cjs/index.d.cts./dist/cjs/index.d.ts
    • 루트 types: ./dist/esm/index.d.ts./dist/esm/index.d.mts

추가 수정

  • "type":"module" 제거 후 eslint 룰에 위배되어 기본값인 "commonjs"를 다시 설정했습니다.
  • /canary-publish가 "No changed files exist under the . path, no packages have been deployed." 에러와 함께 실패해, packages_dir 설정을 "." 에서 "packages"로 변경했습니다.
    • main 브랜치에 반영되어야만 확인 가능해서 이번에는 "✅ 검증" 섹션에 있는 것과 같이 로컬에서 검증 완료했습니다.

📌 리뷰 요청 내용

  • type 필드 제거가 다른 Node / 번들러 환경에 미치는 영향이 없는지 검토 부탁드립니다.
  • 타입 매핑(.d.mts / .d.ts) 변경이 올바른지 확인 부탁드립니다.

✅ 검증

  • pnpm build 4/4 성공
  • 수정 후 node -e "require('@naverpay/prometheus-core')" / require('@naverpay/prometheus-koa') 정상 동작 확인
    • 수정 전 ReferenceError: exports is not defined 발생 → 수정 후 해결
  • 수정 후 node --input-type=module -e "import('@naverpay/prometheus-core').then(console.log)"
    node --input-type=module -e "import('@naverpay/prometheus-koa').then(console.log)" 성공

4개 패키지(core/hono/koa/next)의 "type": "module" 제거.
type: module 선언과 CJS 산출물(dist/cjs/*.js) 조합이 Node require()에서
exports is not defined 유발. ESM 산출물은 .mjs라 영향 없음.
타입 매핑을 빌드 산출물(index.d.mts / cjs index.d.ts)에 맞게 갱신.

Refs #24
@kyungmi kyungmi self-assigned this Aug 27, 2026
@npayfebot

npayfebot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

✅ Changeset detected

Latest commit: 3c5ebc2

@naverpay/prometheus-core, @naverpay/prometheus-hono, @naverpay/prometheus-koa, @naverpay/prometheus-next packages have detected changes.

If no version change is needed, please add skip-detect-change to the label.

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 4 packages
Name Type
@naverpay/prometheus-core 🐛 Patch
@naverpay/prometheus-hono 🐛 Patch
@naverpay/prometheus-koa 🐛 Patch
@naverpay/prometheus-next 🐛 Patch
powered by: naverpay changeset detect-add actions

Removed 'type: module' for Node require() compatibility.
@kyungmi

kyungmi commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator Author

/canary-publish

@npayfebot

Copy link
Copy Markdown
Contributor

No changed files exist under the . path, no packages have been deployed.

궁경미 added 2 commits August 27, 2026 22:24
type: module 제거 후 기본값에 의존하던 것을 명시적 type: commonjs 로 확정.
- require-type eslint 규칙 충족 (type 필수)
- dist/cjs/*.js -> CommonJS, dist/esm/*.mjs -> ESM 확정 해석 (닫기: exports is not defined)

Refs #24
@kyungmi

kyungmi commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator Author

/canary-publish

@npayfebot

Copy link
Copy Markdown
Contributor

No changed files exist under the . path, no packages have been deployed.

@kyungmi
kyungmi marked this pull request as ready for review August 27, 2026 13:50
@kyungmi
kyungmi requested a review from 2-one-week August 27, 2026 14:00

@2-one-week 2-one-week left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

감사합니다

@myamaak myamaak left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다! 작업 감사합니다 👍

@kyungmi
kyungmi merged commit cabed62 into main Aug 28, 2026
4 checks passed
@kyungmi
kyungmi deleted the fix/remove-type-module-cjs branch August 28, 2026 04:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants