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

React Native Web运行异常:process未定义及dispatcher为空问题求助

解决方案:Expo Web端「process is not defined」和「dispatcher is null」错误修复

你的问题核心在于混用了Expo构建流程与Create React App的react-scripts工具,同时手动指定Webpack版本导致依赖冲突,以下是分步修复方案:

1. 清理package.json配置冲突

首先修正脚本与依赖的冲突问题,Expo Web有独立的构建流程,不需要react-scripts:

更新后的package.json

{
  "name": "bigapp",
  "version": "1.0.0",
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web"
  },
  "dependencies": {
    "expo": "~46.0.9",
    "expo-status-bar": "~1.4.0",
    "react": "18.0.0",
    "react-native": "0.69.5"
  },
  "devDependencies": {
    "@babel/core": "^7.12.9"
  },
  "private": true
}
  • 删除重复的start脚本、react-scripts相关命令及preinstall钩子
  • 移除手动指定的webpack、react-scripts、react-error-overlay依赖(Expo会自动管理兼容的版本)

2. 添加Webpack配置解决「process is not defined」

Expo Web使用Webpack 5,默认不再注入process全局变量,需手动添加配置:

在项目根目录创建webpack.config.js文件:

const createExpoWebpackConfigAsync = require('@expo/webpack-config');

module.exports = async function (env, argv) {
  const config = await createExpoWebpackConfigAsync(env, argv);

  // 注入process环境变量
  config.plugins.push(
    new require('webpack').DefinePlugin({
      'process.env': JSON.stringify({
        ...process.env,
        NODE_ENV: env.mode || 'development'
      })
    })
  );

  return config;
};

3. 清理缓存并重新安装依赖

执行以下命令彻底重置依赖环境:

rm -rf node_modules package-lock.json
npm install

4. 启动Web端

npm run web

问题根源说明

  • 脚本冲突:你同时定义了Expo和react-scripts的start命令,导致启动时加载错误的构建配置
  • 依赖版本不兼容:手动指定Webpack 4与Expo 46依赖的Webpack 5冲突,引发process变量缺失
  • 架构冲突:react-scripts是Create React App的构建工具,与Expo的跨平台架构不兼容,导致「dispatcher is null」这类React运行时错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:20:36