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

React Vite中绝对导入失效:无法从src目录导入模块问题

解决React Vite项目中绝对导入失效问题

问题情况

在React Vite项目里用绝对导入从src文件夹引入模块时失败,报错信息:

Failed to resolve import "redux/1space/letter/inboxSlice" from "src/pages/letter/index.jsx". Does the file exist? /

对应的导入代码:

import { loadInboxs } from "redux/1space/letter/inboxSlice";

当前配置文件

Vite配置(vite.config.js)

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import jsconfigPaths from 'vite-jsconfig-paths';
import svgrPlugin from 'vite-plugin-svgr';
import path from "path";

export default defineConfig({
  plugins: [react(), jsconfigPaths(), svgrPlugin()],
  build: {
    outDir: 'build',
  },
  server: {
    open: true,
    port: 3000
  },
  resolve: {
    alias: {
      '~': path.resolve(__dirname, 'src'),
    },
  },
  esbuild: {
    loader: "jsx",
    include: /.\/src\/.*\.js?$/,
    exclude: [],
    jsx: "automatic",
  },
  optimizeDeps: {
    esbuildOptions: {
      loader: {
        '.js': 'jsx',
      },
    },
  }, 
})

jsconfig.json配置

{
    "compilerOptions": {
        "baseUrl": "src",
        "target": "ESNext",
        "lib": ["dom", "dom.iterable", "esnext"],
        "types": ["vite/client", "vite-plugin-svgr/client"],
    },
    "include": ["src","src/.js"]
  }

修复方案

你的配置有两处关键问题,调整后就能解决绝对导入失效的问题:

  • 修正Vite别名配置
    当前别名用的是~,但你的导入语句直接基于src根目录写redux/...,需要把别名改成更通用的@,同时确保路径映射正确。修改Vite配置里的resolve.alias:
resolve: {
  alias: {
    '@': path.resolve(__dirname, './src'),
  },
},
  • 修正jsconfig.json配置
    1. baseUrl改成.(相对于配置文件的路径,设置为.才能正确映射src目录)
    2. 添加paths字段明确绝对路径的映射规则,同时修正include的范围
      修改后的jsconfig.json:
{
  "compilerOptions": {
    "baseUrl": ".",
    "target": "ESNext",
    "lib": ["dom", "dom.iterable", "esnext"],
    "types": ["vite/client", "vite-plugin-svgr/client"],
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*"]
}
  • 调整导入语句(可选)
    如果用@别名,导入代码改成:
import { loadInboxs } from "@/redux/1space/letter/inboxSlice";

另外要额外检查:src/redux/1space/letter/inboxSlice.js(或.jsx)文件是否真实存在,文件名大小写是否和导入语句完全匹配(区分大小写的系统里必须严格一致)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:25:20