我正在使用各种第三方 npm 模块,我不控制其源代码,并且没有其他选择。
当我使用 Vite 运行
npm run build
时,我看到了几页
transforming (556) node_modules/is-stream/index.js[plugin:vite:resolve] Module "crypto" has been externalized for browser compatibility, imported by "myapp/node_modules/@bundlr-network/client/build/common/upload.js". See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.
transforming (637) node_modules/@portal-payments/solana-wallet-names/node_modules/buffer/index.js[plugin:vite:resolve] Module "crypto" has been externalized for browser compatibility, imported by "myapp/node_modules/@bundlr-network/client/build/common/transaction.js". See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.
transforming (719) node_modules/semver/functions/satisfies.js[plugin:vite:resolve] Module "crypto" has been externalized for browser compatibility, imported by "myapp/node_modules/arbundles/src/Bundle.js". See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.
[plugin:vite:resolve] Module "crypto" has been externalized for browser compatibility, imported by "myapp/node_modules/arbundles/src/DataItem.js". See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.
[plugin:vite:resolve] Module "crypto" has been externalized for browser compatibility, imported by "myapp/node_modules/arbundles/src/deepHash.js". See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.
transforming (965) node_modules/@ethereumjs/rlp/dist/index.js[plugin:vite:resolve] Module "http" has been externalized for browser compatibility, imported by "myapp/node_modules/micro-ftch/index.js". See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.
我理解 vite 是“排除”这些模块的,虽然 vite 没有明确说明外部化的含义,但文档的另一部分指出:
运行 SSR 时,依赖项默认从 Vite 的 SSR 转换模块系统“外部化”。这可以加快开发和构建速度。
这似乎表明 Polyfill 没有得到优化。明白了。
我很难使用不同的模块,对上游第三方模块进行重大更改,或者重写第三方模块。
我很满意节点 polyfill 没有得到优化。我的问题是,而不是其他有用的构建输出被淹没在许多页面的警告中。
如何禁用警告?
正如Vite 文档提到的“建议将问题报告给相应的库”。所以也许包的作者已经解决了这个问题。我的crypto-js版本是4.0.0,当我将其版本更新到4.2.0时,控制台不再显示警告!