ReactDOM RSS renderToString 生产错误

Posted

技术标签:

【中文标题】ReactDOM RSS renderToString 生产错误【英文标题】:ReactDOM RSS renderToString production error 【发布时间】:2018-08-15 17:34:29 【问题描述】:

我为 react16 创建了新的样板。

https://github.com/jasonvillalon/react16-boilerplate

它在开发中运行时使用:

npm start
npm start:webpack

但是在生产中运行时,它会在 renderToString 上引发错误

NODE_ENV=production npm start

webpack 成功没有错误,但是在渲染页面时出现错误:

ERROR: TypeError: Cannot set property 'getCurrentStack' of undefined
at setCurrentDebugStack (webpack:///./node_modules/react-dom/cjs/react-dom-server.node.development.js?:1816:48)
at ReactDOMServerRenderer.read (webpack:///./node_modules/react-dom/cjs/react-dom-server.node.development.js?:2225:13)
at renderToString (webpack:///./node_modules/react-dom/cjs/react-dom-server.node.development.js?:2494:29)
at _callee$ (webpack:///./src/server.jsx?:66:49)
at tryCatch (/Users/jasonvillalon/Documents/fun-projects/from-scratch/node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js:65:40)
at Generator.invoke [as _invoke] (/Users/jasonvillalon/Documents/fun-projects/from-scratch/node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js:303:22)
at Generator.prototype.(anonymous function) [as next] (/Users/jasonvillalon/Documents/fun-projects/from-scratch/node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js:117:21)
at step (webpack:///./src/server.jsx?:27:191)
at eval (webpack:///./src/server.jsx?:27:437)
at new Promise (<anonymous>)

有人知道发生了什么吗?

最好的问候, 杰森

【问题讨论】:

更改 NODE_ENV=production 会导致错误。所以我现在的工作是使 NODE_ENV=staging 或 NODE_ENV=development。不能使用生产:| 有过这个经历吗? 仅供参考,我得到了一些帮助,发现这是因为 react-dom 的开发版本正在使用 NODE_ENV=production 运行。 github.com/facebook/react/issues/13276 【参考方案1】:

问题在于,在 Webpack 中,您设置了以下内容:

let config = 
  mode: "development",
....

但是在您设置的 Winblows / DOS 命令行上:

set NODE_ENV=production

或者在你设置的 Linux 上

export NODE_ENV=production

或者可能在您设置的 webpack.config.js 中:

let config = 
  ...

  new webpack.DefinePlugin(
    "process.env": 
      NODE_ENV: JSON.stringify("production")
    
  )

要解决此问题,您需要修复顶部:

let config = 
  mode: "production",
....

或取消设置 NODE_ENV 环境变量。

上面的 cmets 归功于 @Jordan M Alperin。

【讨论】:

以上是关于ReactDOM RSS renderToString 生产错误的主要内容,如果未能解决你的问题,请参考以下文章

ReactDOM.render和ReactDOM.createPortal

React 与 ReactDOM?

ReactDOM.render 与 React 组件渲染区别

ReactDOM.render()

React:映射 ReactDOM.findDOMNode(this) 的子节点

React源码 ReactDOM.render