cloudflare/vinext

Import condition resolution wrong per Vite environment (`react-server`, `edge-light`, `browser`)

Open

#1,356 创建于 2026年5月20日

在 GitHub 查看
 (2 评论) (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-20).

Problem

Vite import conditions (react-server, edge-light, browser) are not being set correctly per environment. Package exports conditions should resolve differently depending on which Vite environment is doing the importing:

  • RSC environment: Should resolve react-server condition
  • Edge runtime: Should resolve edge-light condition
  • Client/browser: Should resolve browser condition
  • SSR/Node: Should resolve node condition

Tests show that conditions like react-server resolve to null when they should have a value, and edge-light resolves as node instead.

Estimated Impact

~11 test failures.

Affected Test Suites

  • test/e2e/import-conditions/import-conditions.test.ts (11 failures)

Recommendation

  1. Reproduce first in vinext's own test suite. Add a test with a package that has different exports conditions (e.g., react-server, edge-light, browser, node) and verify the correct export is resolved in each environment. Confirm the wrong condition is being used.

  2. Study how conditions are configured per environment. Check resolve.conditions in the Vite config for each environment (RSC, SSR, client). The RSC environment needs ["react-server", ...], edge environments need ["edge-light", "worker", ...], and client needs ["browser", ...].

  3. Fix the Vite plugin's environment configuration. In the vinext Vite plugin (index.ts), ensure each environment's resolve.conditions array includes the correct conditions for that context.

贡献者指南