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

Redux导入报错:SyntaxError: Cannot use import statement outside a module

Redux导入报错:SyntaxError: Cannot use import statement outside a module

错误原因

  1. 模块系统不兼容:Node.js默认使用CommonJS模块规范(通过require导入依赖),而import属于ES模块语法,默认环境下Node.js不会解析该语法,直接使用就会触发报错。
  2. 变量重复声明:你同时使用import redux from "redux"和const redux = require("redux"),会导致redux变量被重复定义,即便解决模块问题,也会引发新的语法错误。

解决方案

方案1:使用CommonJS规范(无需额外配置)

删除import语句,仅保留CommonJS导入方式,这也是多数Redux入门教程的默认写法:

// 移除 import redux from "redux";
const redux = require("redux")

const createStore = redux.legacy_createStore

// 后续代码保持不变...

修改完成后直接用Node.js运行脚本即可。

方案2:切换为ES模块规范

如果偏好ES模块的import语法,需要做以下两步修改:

  1. 删除require语句,保留ES模块导入:
import redux from "redux";
// 移除 const redux = require("redux")

const createStore = redux.legacy_createStore

// 后续代码保持不变...
  1. 在项目的package.json中添加"type": "module"字段,告知Node.js当前项目采用ES模块:
{
  "type": "module"
}

或者将脚本文件后缀从.js改为.mjs,也能让Node.js按ES模块规则解析文件。

额外优化提示

你的reducer函数存在一个可优化点:更新状态时建议先展开原状态再修改目标属性(即便当前state只有numOfCakes),养成符合Redux规范的状态更新习惯:

const reducer = (state = initialState, action) => {
    switch(action.type) {
        case CAKE_ORDERED:
            return {
                ...state, // 展开原状态所有属性,避免丢失其他状态
                numOfCakes: state.numOfCakes - 1
            }
        default:
            return state
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:50:44