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

React Redux Toolkit项目yarn build报错:Prefer named exports import/no-default-export

解决React Redux-Toolkit项目yarn build时的import/no-default-export错误

问题原因

这个错误来自ESLint的import/no-default-export规则,该规则强制要求使用命名导出而非默认导出。你的代码中export default orders.reducer;这一行违反了该规则,导致构建校验不通过。

解决方案

方法1:改为命名导出(推荐)

修改Orders slice文件的导出语句,将默认导出替换为命名导出:

// 替换原来的 export default orders.reducer;
export const ordersReducer = orders.reducer;

同时,在你的Redux store配置文件中,也要对应修改导入方式:

// 替换原来的默认导入
import { ordersReducer } from './path/to/ordersSlice';

// 在configureStore中使用
export const store = configureStore({
  reducer: {
    orders: ordersReducer,
    // 其他reducer...
  },
});

修改后的完整Orders slice代码:

import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
import { ORDER_SLICE } from 'constants/Constants';
import { envConfig } from 'envConfig';
import { httpClient } from 'httpClient';
import { GetOrdersType, OrdersType } from 'redux/interface/Orders';

const initialState: OrdersType = {
  data: null,
  totalCount: null,
  loading: false,
  error: null,
};

const orders = createSlice({
  name: ORDER_SLICE.NAME,
  initialState,
  reducers: {},
  extraReducers: (builder) => {
    builder.addCase(getOrdersData.pending, (state) => {
      state.loading = true;
    });
    builder.addCase(getOrdersData.fulfilled, (state, action) => {
      state.loading = false;
      state.data = action.payload.orders;
      state.totalCount = Number(action.payload.pageable.totalCount);
    });
    builder.addCase(getOrdersData.rejected, (state, action) => {
      state.loading = false;
      state.error = action.payload;
    });
  },
});

// 改为命名导出
export const ordersReducer = orders.reducer;

export const getOrdersData = createAsyncThunk(
  ORDER_SLICE.GET_ORDERS_DATA,
  async (config:GetOrdersType, { rejectWithValue }) => {
    try {
      const response = await httpClient?.get(`${envConfig.apiOrders}?size=${config.size}&page=${config.currentPage}`);
      return response?.data;
    } catch (error: any) {
      console.log('error ', error);
      return rejectWithValue(error.message);
    }
  },
);

方法2:临时绕过ESLint规则(不推荐)

如果暂时不想修改导出方式,可以在触发错误的代码行添加ESLint忽略注释:

export default orders.reducer; // eslint-disable-line import/no-default-export

这种方式只是临时规避校验,不符合规则的设计初衷,建议优先采用命名导出的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:59:58