当前位置:  开发笔记 > 编程语言 > 正文

在NodeJS中执行webpack编译的bundle

如何解决《在NodeJS中执行webpack编译的bundle》经验,为你挑选了1个好方法。

我想为我的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中工作?

我使用node-clone作为外部lib.它不使用任何其他库作为依赖.但是它的bundle中的webpack使缓冲区成为这个lib的依赖项.在buffer代码中,我遇到了错误Cannot read property 'TYPED_ARRAY_SUPPORT' of undefined.它发生是因为在nodeJS (function() { return this; }())返回undefined.



1> Josh David M..:

默认情况下,webpack会为浏览器打包.如果要使用webpack构建Node库,则需要target在配置中指定:

module.exports = {
  // ...

  target: 'node',
};

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有