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

Rollup+TS+Styled-Components构建组件库时useContext报错求助

解决方案:Styled-Components 构建后 useContext 报错问题

针对你遇到的构建组件库后渲染按钮时出现的Uncaught TypeError: Cannot read properties of null (reading 'useContext')错误,以下是几个实际可落地的排查和修复方向:

1. 确保Rollup正确排除外部依赖

组件库不应将React、ReactDOM和Styled-Components打包进产物,需让消费环境提供这些依赖,否则会出现上下文冲突或重复实例问题。在rollup.config.js中配置external字段:

export default {
  // ...其他配置
  external: ['react', 'react-dom', 'styled-components'],
  output: {
    // ...输出配置
    globals: {
      react: 'React',
      'react-dom': 'ReactDOM',
      'styled-components': 'styled'
    }
  }
};

2. 优化Styled-Components的Babel插件配置

确保Babel插件配置完整且适配组件库场景,在babel.config.json或.babelrc中调整:

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-typescript",
    ["@babel/preset-react", { "runtime": "automatic" }]
  ],
  "plugins": [
    ["styled-components", {
      "ssr": true,          // 适配SSR场景,避免上下文丢失
      "displayName": true,  // 生成可读的类名,方便调试
      "pure": true          // 帮助Tree-shaking优化
    }]
  ]
}

同时检查Rollup的Babel插件是否正确加载配置,比如使用@rollup/plugin-babel时,确保babelHelpers设置为runtime:

import babel from '@rollup/plugin-babel';

// 在plugins数组中
babel({
  babelHelpers: 'runtime',
  exclude: 'node_modules/**',
  extensions: ['.js', '.jsx', '.ts', '.tsx']
})

3. 验证React与Styled-Components版本兼容性

React 18需要Styled-Components v5.3.0及以上版本支持,若版本不匹配会导致上下文API调用异常。执行以下命令更新依赖:

npm update styled-components
# 或
yarn upgrade styled-components

4. 检查Rollup的React插件配置

使用@rollup/plugin-react时,确保开启自动JSX runtime支持,避免手动引入React导致的问题:

import react from '@rollup/plugin-react';

// 在plugins数组中
react({
  jsxRuntime: 'automatic',
  babelHelpers: 'runtime'
})

5. 排查组件导出与代码结构

  • 避免在导出Styled-Components组件时使用不必要的高阶组件包裹,若必须使用,需确保上下文能正确传递;
  • 检查组件文件中是否存在未正确导入React的情况(React 17+自动JSX runtime无需手动导入,但旧版本或配置错误时可能需要);
  • 查看Rollup产物中是否存在React被错误置为null的情况,比如Tree-shaking过度导致React核心模块被移除。

内容的提问来源于stack exchange,提问作者Thiago Almeida Amorim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:52:22