cloudflare/vinext

App Router client modules: package `type: "commonjs"`/`"module"` overrides ignored

Open

#1,504 创建于 2026年5月22日

在 GitHub 查看
 (0 评论) (0 反应) (0 负责人)TypeScript (329 fork)github user discovery
adapter-api-e2ehelp wanted

仓库指标

Star
 (8,120 star)
PR 合并指标
 (平均合并 1天 1小时) (30 天内合并 462 个 PR)

描述

This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext main vs Next.js v16.2.6, 2026-05-22).

Problem

When a "use client" module imports a package whose package.json sets "type": "commonjs" (or "module") without an exports map, Next.js honors the type field. vinext always resolves the ESM build, so the rendered text mixes up cjs and esm markers.

Package with `type: "commonjs"` still resolved as ESM

Estimated Impact

~2 test failures across the deploy suite.

Affected Test Suites

  • test/e2e/app-dir/client-module-with-package-type/index.test.ts (2 failures)

Recommendation

  1. Reproduce first in vinext's own test suite. Add fixtures importing two packages: one with type: 'commonjs' and one with type: 'module', both without exports. Assert each resolves correctly.

  2. Respect type field in the resolver. When there is no exports map, fall back to type for choosing between main (CJS) and module (ESM) entry.

贡献者指南