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

使用css-blocks与webpack时出现Cannot read property 'context' of undefined错误

解决create-react-app eject后集成css-blocks时的"Cannot read property 'context' of undefined"错误

我之前也踩过类似的坑,eject后的create-react-app配置本身就比较繁琐,第三方工具很容易因为上下文适配问题搞出这类报错。结合你描述的情况来看,问题大概率出在css-blocks的loader配置没有正确关联webpack的上下文环境,或者参数传递有遗漏,给你几个具体的排查和解决步骤:

排查步骤与解决方案

1. 调整css-blocks loader的执行顺序

webpack的loader是从后往前执行的,css-blocks的loader必须放在普通css处理loader(比如css-loader、style-loader)之前,确保它先处理block文件,再把结果交给后续的css loader。你可以检查下webpack配置里module.rules中相关loader的顺序,把@css-blocks/webpack的规则放在最前面的css相关规则里。

2. 显式传入webpack上下文参数

很多时候这类"context undefined"的错误,是因为css-blocks loader没有拿到webpack的上下文信息。你可以在css-blocks的loader配置里手动指定context参数,比如:

{
  test: /\.block\.css$/,
  use: [
    require.resolve('style-loader'),
    require.resolve('css-loader'),
    {
      loader: require.resolve('@css-blocks/webpack'),
      options: {
        context: __dirname, // 显式传入当前配置文件的上下文路径
        blockDefinitions: path.resolve(__dirname, './src/blocks'), // 确保这个路径是正确的
        // 其他css-blocks配置项...
      }
    }
  ]
}

3. 验证依赖版本兼容性

eject后的create-react-app会锁定特定版本的webpack,而css-blocks的webpack loader对webpack版本有要求。你可以在项目根目录执行npm ls webpack查看当前webpack版本,然后对照css-blocks的版本要求,确认两者是否兼容。如果版本不匹配,要么升级/降级webpack,要么更换对应的css-blocks版本。

4. 简化配置逐步定位问题

如果上面的步骤都没解决问题,建议先把css-blocks的配置简化到最基础的状态,只保留核心的loader和必要参数,启动开发服务器看是否还报错。如果正常了,再逐步添加其他配置项(比如自定义的block定义、优化参数等),这样就能快速定位到是哪个配置项导致的上下文问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:22:37