我想为我的 ReactJS 应用程序实现服务器端渲染。我用react-router
. 我将routes.js
其作为 webpack 入口点并使用output.libraryTarget = "commonjs2"
选项进行编译。然后我需要NodeJS脚本中的编译结果来进行渲染。但我有错误。Webpack 将模块包装在以下代码中:
/* 277 */
/***/ function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(Buffer, global) {
if (global.foo) {
/* ... */
}
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(277).Buffer, (function() { return this; }())))
/***/ }
当 NodeJS 尝试执行(function() { return this; }())
它的 return 时undefined
。在浏览器中它会返回window
. 为什么 webpack 使用这样的包装代码?如何使这段代码在 NodeJS 中工作?
我使用节点克隆作为外部库。它不使用任何其他库作为依赖项。但是 webpack 在它的 bundle 中将buffer作为这个 lib 的依赖。在buffer
代码中我遇到了错误Cannot read property 'TYPED_ARRAY_SUPPORT' of undefined
。发生这种情况是因为在 nodeJS (function() { return this; }())
returnundefined
中。