参考错误:未定义self

时间:2017-10-25 19:35:09

标签: javascript node.js reactjs

我们正面临着这个问题

  

"参考错误:未定义自我'

尝试使用React-data-grid时。尝试使用webpack构建nodejs应用程序时,问题出在服务器端。我们在生成的捆绑文件中遇到以下行

的问题
isOldIE = memoize(function() {          return /msie
[6-9]\b/.test(self.navigator.userAgent.toLowerCase());      }),

您能告诉我们如何解决这个问题。看起来反应数据网格包在服务器端渲染方面存在问题。

2 个答案:

答案 0 :(得分:7)

self可能指的是服务器端无法提供的window ...它仅在浏览器上下文中可用。 navigator引用使这一点特别明显。此代码正在尝试测试Internet Explorer verison的用户代理。

self.navigator.userAgent.toLowerCase()

正如乔丹指出的那样,关于同构渲染存在一个悬而未决的问题#361

如果可能,请尽量避免在服务器端执行该代码。否则,您必须等待react-data-grid中的补丁。

答案 1 :(得分:0)

使用以下软件包 exenv 修复此问题,该软件包限制它仅在客户端呈现期间检查已过帐条件

var ExecutionEnvironment = require('exenv');
if(ExecutionEnvironment.canUseDOM) {
  const ReactDataGrid = require('react-data-grid');
  const {Toolbar, Filters: {NumericFilter, AutoCompleteFilter, MultiSelectFilter, SingleSelectFilter}, Data: {Selectors}} = require('react-data-grid-addons');
}