为什么我们在 webpack 中设置 node.fs: 'empty' ?

Yil*_*maz 7 javascript fs node.js webpack

我看到此错误“找不到模块:错误:无法解析......中的'fs'”,解决方案是

// webpack 4
node: {
    fs: "empty"
}


//webpack5
   resolve: {
    extensions: [".ts", ".tsx", ".js", ".css"],
    fallback: {
      fs: false,
    },
  },
Run Code Online (Sandbox Code Playgroud)

但是我不知道“fs:false”或“空”是什么意思?

Har*_*til 2

这意味着同样的事情。有时,很少有模块使用原生 Node.js 模块,例如fsWebpack 在针对浏览器环境进行捆绑时尝试捆绑的模块。由于fs不可用或者对浏览器环境没有任何意义,Webpack 会抛出模块未找到错误。

"empty"指定或falsefor的值fs是告诉 Webpack 忽略该模块并且不尝试捆绑它。

为什么会出现这种情况?有些模块是同构的,意味着同时支持浏览器和 Node.js。像 Webpack 这样的捆绑器无法简单地确定是否应该排除本机模块。(借助 ESM 模块、tree shake 和sideEffect,Webpack 可以在很大程度上很好地处理这个问题。)