1

当我构建我的应用程序时,在 webpack 开发模式下,一切正常。

但是当我在生产模式下运行 webpack 时,我得到了 Uncaught TypeError: Cannot read property __emotion_forwardProp of undefined。似乎该标签以某种方式未定义。

我在@emotion 中找到了导致错误的代码,但不知道为什么以及如何修复它:

if (process.env.NODE_ENV !== 'production') {
  if (tag === undefined) {
    throw new Error('You are trying to create a styled element with an undefined component.\nYou may have forgotten to import it.');
  }
}

即使在生产 NODE_ENV 的非缩小版本上,我也没有收到错误,这意味着问题不在于我的代码,而在于情感和缩小的东西。

我正在使用默认的 Terser webpack 插件进行缩小。Webpack 4.31.0 @emotion 10.0.10

你有什么建议吗?

4

1 回答 1

1

这是由您导入/导出组件的方式引起的。

当您有 index.js 导入多个组件然后导出它们并从索引中导入组件时,如下所示:

import { SomeComponent } from '..' or '../'

这会导致标签在情感 createStyled 函数中未定义,这似乎是 terser 或 @emotion 的错误。

因此,通过它们的相对路径导入组件而不使用“重定向”将解决它。

于 2019-06-06T08:49:17.937 回答