【问题标题】:Heroku, NodeJs and React issue: SCRIPT5007: Unable to get property 'apply' of undefined or null referenceHeroku、NodeJs 和 React 问题:SCRIPT5007:无法获取未定义或空引用的属性“应用”
【发布时间】:2018-12-25 13:39:16
【问题描述】:

我猜,polyfill 有一个奇怪的问题。我将 MERN 堆栈用于我的应用程序,并推送到 Heroku。出于某种原因,在我的 Chrome 计算机上,我可以查看该网站,但是,在其他计算机上,我得到一个空白页面,并且控制台中出现错误:

'SCRIPT5007: Unable to get property 'apply' of undefined or null reference'

它指向这段代码,并且显然与 Redux 相关联:

return funcs.reduce(function (a, b) {
    return function () {
      return a(b.apply(undefined, arguments));
    };
  });
}

我将 babel-polyfill 导入到我的 App.js 文件中,甚至将 <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=default,es6"></script></script> 添加到 index.html 但仍然没有运气。可以做些什么来解决这个问题?

UPD:似乎原因是 Redux 开发工具。我需要在生产中以某种方式禁用它。

【问题讨论】:

  • 您的电脑和另一台电脑是否运行相同版本的 chrome?如果是,这不是 polyfill 问题,因为相同版本的浏览器应该支持相同的 js 语法
  • 同版本67.0.3396.99(正式版)(64位)。另外,我电脑上的 Microsoft Edge 也出现了这个问题。
  • 它可能与polyfill无关,但是会话敏感的逻辑错误呢?在你的电脑上用 chrome 隐身模式试试
  • 是的,在隐身模式下同样的问题。指向 Redux。但我没有为着陆页使用任何 redux 状态。
  • 现在您知道问题与会话有关,您可能想先尝试在本地开发模式下调试,使用未缩小的代码,以了解实际情况。

标签: node.js reactjs express heroku mern


【解决方案1】:

显然,这个问题与我使用的 Redux DevTools 有关。所以,在 redux store.js 中我不得不改变这个:

const store = createStore(
  rootReducer,
  initialState,
  compose(
    applyMiddleware(...middleware),
    window._REDUX_DEVTOOLS_EXTENSION_ ? window.__REDUX_DEVTOOLS_EXTENSION__() // Error is this line
  )
);

到这里:

const store = createStore(
  rootReducer,
  initialState,
  compose(
    applyMiddleware(...middleware),
    window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() : f => f
  )
);

一切正常。

【讨论】:

  • 你能解释一下为什么这个东西解决了这个问题吗?
  • 该行表示检查是否启用了开发工具扩展的功能。错误是函数定义不正确。
猜你喜欢
  • 1970-01-01
  • 2013-08-10
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多