在 Webpack 中存根内置 nodejs 模块

问题描述

我正在通过服务器端渲染运行一些 nodejs 代码。具体来说,我将 mini_racer gem 用于 Ruby。 我正在使用 webpack 来捆绑我的 Javascript 文件。 我遇到了一个问题,我的依赖项使用了内置的 nodejs 模块(例如,http、events、fs 等)。

当我在 V8 环境中运行它时,这些模块不存在(即,使用 require 将不起作用,因为该函数未定义)。

有没有办法可以通过 webpack 存根这些模块?或者其他一些 Javascript 解决方案,如果这不起作用。 也许使用一些内置的 webpack 属性插件

最终,我不需要这些模块并希望通过一些存根绕过,但我无法控制需要它们的第 3 方依赖项。

谢谢!

解决方法

幸运的是,在 webpack 配置中有一种方法可以做到这一点:

{
  resolve: {
    fallback: {
      fs: false,net: false,tls: false,},alias: {
      stream: 'stream-browserify',zlib: 'browserify-zlib',}
  }
}

Fallback 将简单地向模块添加空存根,而别名将补充为浏览器制作的另一个模块。

这是针对 webpack 5 的,在版本 4 之前你可以简单地做:

{
  node: {
    fs: false
  }
}