【问题标题】:Why lodash get returns undefined for nested object in the react production build?为什么 lodash get 在反应生产构建中为嵌套对象返回未定义?
【发布时间】:2019-10-05 19:53:28
【问题描述】:

实际上,我知道我的问题很奇怪,但我真的很困惑。 lodash 函数很棒,使用它们是获得安全和干净代码的一种安全方式,但是在我的 react 项目中,当我使用 lodash 的 get 函数时,在 开发环境 中它适用于每个开发人员预计。

import get from 'lodash/get';

const hostname = get(window, 'location.hostname');
// => returns the current hostname

但是在我运行 yarn build && yarn start 来构建我的 ReactJS 应用程序并运行它之后,它的行为发生了变化并返回 undefined

import get from 'lodash/get';

const hostname = get(window, 'location.hostname');
// => returns undefined

所以在生产版本中,我尝试get(window, 'location'),它返回location 对象。但是当我输入位置键时,lodash get 函数会返回 undefined

实际上,在生产中,只是为了嵌套它返回 undefined

由于这个问题,我才找到this post,但没有人回答。

【问题讨论】:

  • mmh。我做了一个最小的设置,在生产模式下我得到 127.0.0.1 ...所以我认为你必须提供比这个 sn-p 更多的代码。
  • 亲爱的@madflow,我的代码就是这样。但我猜有一些 babel 或 webpack 插件会更改生产构建中的某些部分代码。我使用React Cool Starter 开始我的项目,但我使用了一些插件,它们可能会破坏生产构建中的lodash get 功能。

标签: reactjs webpack get lodash


【解决方案1】:

根据this comment,我开始热衷于测试我的生产版本。所以我列出了在我的项目的生产版本中发生的所有可能导致此问题的事情。

起初,我怀疑我用于转译的 babel 插件,但它们都不会影响生产,它们会影响整个环境。

最后,我找到了LodashModuleReplacementPlugin。这个插件会导致这个问题。

基于其文档:

对 _.get、_.has 和 _.set 等方法的深度属性路径支持。

这个插件省略了对 lodash get 的深度路径支持。 这就是重点

【讨论】:

  • 谢谢,亲爱的@madflow,我找到了问题发生的原因。
猜你喜欢
  • 1970-01-01
  • 2012-01-05
  • 2021-11-10
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多