在NodeJS中执行webpack编译的包

我想为我的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; }())它的返回值undefined 。 在浏览器中将返回window 。 为什么webpack使用这样的包装代码? 如何使这个代码在NodeJS中工作?

我使用节点克隆作为外部库。 它不使用任何其他库作为依赖。 但是在它的包中的webpack使得缓冲区成为这个lib的依赖。 并在buffer代码中,我得到了错误Cannot read property 'TYPED_ARRAY_SUPPORT' of undefined 。 这是因为在nodeJS (function() { return this; }())返回undefined

默认情况下,webpack将打包浏览器。 如果要使用webpack构buildNode库,则需要在configuration中指定一个target

 module.exports = { // ... target: 'node', };