You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite构建报错Could not resolve "../internals/window"问题求助

解决Vite构建时RollupError:无法解析"../internals/window"的问题

问题分析

你遇到的冲突源于define配置中的global: "window"与rollupOptions.external里的"jss-plugin-window":开发环境需要global映射到window才能正常运行,但构建阶段这个映射会干扰Rollup对外部模块内部依赖的解析,导致找不到../internals/window路径。

解决方案

通过按环境动态配置全局变量解决冲突:开发环境保留define配置,构建环境改用Rollup的inject插件注入全局变量,同时保留jss-plugin-window的外部依赖设置。

修改后的Vite配置如下:

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import viteTsconfigPaths from "vite-tsconfig-paths";
import svgrPlugin from "vite-plugin-svgr";
import inject from '@rollup/plugin-inject'; // 先执行安装:npm install @rollup/plugin-inject --save-dev

export default defineConfig(({ command, mode }) => {
  const isDev = command === 'serve';
  return {
    plugins: [react(), viteTsconfigPaths(), svgrPlugin()],
    preview: {
      port: 3000,
    },
    build: {
      outDir: "build",
      rollupOptions: {
        external: ["jss-plugin-window"],
        plugins: [
          // 构建阶段注入global指向window
          inject({
            global: 'window',
          }),
        ],
      },
    },
    define: isDev ? { global: "window" } : {},
    server: {
      open: true,
      port: 3000,
    },
    envPrefix: "REACT_APP_",
  };
});

关键逻辑说明

  • 开发环境:用define直接映射global到window,保证开发服务器正常运行
  • 构建环境:移除define中的全局映射,改用inject插件在打包时为代码注入global = window,避免干扰外部模块的路径解析

内容的提问来源于stack exchange,提问作者Michel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:40:23