【问题标题】:How to handle window object on nodejs for server-side rendering of reactjs application如何处理nodejs上的window对象以用于reactjs应用程序的服务器端渲染
【发布时间】:2015-04-01 06:47:40
【问题描述】:

我正在尝试为我的 reactjs 应用程序实现服务器端渲染。 我正在使用 webpack 构建 reactjs 应用程序,增强解析来处理 nodejs 中 jsx 文件的导入。

我的应用程序依赖于第三方库,例如 enquire.js。 当 react 应用程序尝试在 nodejs 上导入 enquire.js 时,它失败并出现错误 ReferenceError: window is not defined

由于 window 对象不可用 nodejs 如何处理使用窗口进行服务器端渲染的库?

【问题讨论】:

    标签: javascript node.js reactjs enquire.js isomorphic-javascript


    【解决方案1】:

    我还没有使用过 Webpack。但是,我在使用 browserify 时遇到了类似的问题,我通过创建两个构建来解决它:一个用于浏览器,一个用于 node.js,其中包含要忽略的模块列表。你可以通过添加到 webpack 配置来达到同样的效果:

    {
        plugins: [
            new webpack.IgnorePlugin(/file\.js$/)
        ]
    }
    

    然后您必须通过检查 require() 是否返回错误值或带有模块函数的对象来确保您没有对 enquire.js 进行任何调用。

    【讨论】:

    • 你能分享一下你用browserify解决这个问题的解决方法吗?谢谢
    • 这会导致e.code = 'MODULE_NOT_FOUND'; throw e; }())); 错误。不能这样工作。
    【解决方案2】:

    好吧,如果有人在看,这仍然是一个很老的问题。

    试试

    if (typeof window === 'undefined') {
      global.window = {};
    }
    

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 2016-10-22
      • 2016-11-16
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多