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

React应用部署到Heroku时报错,本地运行正常

React应用本地正常但Heroku部署后出现"Super expression must either be null or a function"错误的解决办法
  • 检查类组件继承语法
    这个错误最常见的原因是类组件继承时的语法错误,比如把React.Component写成小写的React.component,或者导入React的方式有误。打开Navbar.js第67行附近的代码,确认组件定义符合以下正确格式:

    // 写法一:直接使用React.Component
    import React from 'react';
    class Navbar extends React.Component {
      // 组件逻辑
    }
    
    // 写法二:解构导入Component
    import { Component } from 'react';
    class Navbar extends Component {
      // 组件逻辑
    }
    

    本地开发时babel的宽松编译可能忽略这类错误,但Heroku的生产构建会严格校验,进而触发报错。

  • 确认组件的导出与导入匹配
    如果Navbar是默认导出,确保导入时使用正确的语法,避免命名导入和默认导入混淆:

    // Navbar.js 正确的默认导出
    export default Navbar;
    
    // 对应正确的导入方式
    import Navbar from './Navbar';
    // 不要写成 import { Navbar } from './Navbar'; 除非组件是命名导出
    

    错误的导入会导致组件对象变为undefined,继承时就会抛出"Super expression must either be null or a function"错误。

  • 排查第三方组件的使用
    如果Navbar中引入了第三方UI组件,确认是否按照官方文档正确导入和使用。不要错误地继承一个非函数/非类的对象,比如把一个函数组件当作父类来继承。

  • 清理Heroku缓存并重新构建
    旧的构建缓存可能导致新代码未生效,通过以下命令清理缓存并重新部署:

    heroku plugins:install heroku-repo
    heroku repo:purge_cache -a your-app-name
    git commit --allow-empty -m "Purge cache"
    git push heroku main
    

    替换your-app-name为你的Heroku应用名称。

  • 锁定React版本一致性
    确保本地开发环境和Heroku构建环境的React版本一致,避免版本差异引发的兼容问题。在package.json中锁定react和react-dom的版本号,不要使用^这类会自动升级大版本的前缀:

    "dependencies": {
      "react": "18.2.0",
      "react-dom": "18.2.0",
      // 其他依赖项
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:21:28