问题描述
我正在通过服务器端渲染运行一些 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
}
}