admin管理员组

文章数量:814981

如何解决React项目中的“ TypeError:无法读取未定义的属性'inherits'?”

我从事React项目。我正在尝试使用npm软件包async-polling(),该软件包要使用inheritsnode-utils类;库内部有以下几行:

var inherits = hasWindow ? window.nodeUtil.inherits : require('util').inherits;
var EventEmitter = hasWindow ? window.nodeEventEmitter : require('events').EventEmitter;

当然,因为应用程序正在浏览器中运行,所以hasWindow为true。但是没有nodeUtilnodeEventEmitter。因此我得到了错误:

TypeError: Cannot read property 'inherits' of undefined

然后我尝试添加utilevents软件包并执行此操作:

window.nodeUtil = require('util');
window.nodeEventEmitter = require('events');

但是我遇到了这个错误:

TypeError: AsyncPolling is not a constructor

花药叉能够解决此问题,但我想尝试使用原始包装,是否有办法解决此问题?

回答如下:

尽我所能告诉async-polling是一个旧的,未维护的模块,您最好避免使用。您遇到了问题,因为模块期望存在两个全局变量nodeUtilnodeEventEmitter。该软件包看起来更适合于节点环境,并且依赖于浏览器中的polyfills。

我建议您找到一个最新的软件包,或者简单地使用setInterval进行轮询。

const intervalInMilliseconds = 5000;
const timerId = setInterval(() => {
  if (/* some condition is met */) {
    clearInterval(timerId);
  } else {
    // do stuff
  }
}, intervalInMilliseconds);

本文标签: 如何解决React项目中的“ TypeError无法读取未定义的属性39inherits39”