首页 > 解决方案 > 当目标模块在 node_modules 中时,Webpack 的别名不起作用

问题描述

背景

我正在用打字稿编写一个 SSR 反应应用程序,我必须使用一个客户端模块(client-logger),它只能在客户端运行,因为它是 AMD 模块系统。在 Node 上运行会报错。

我目前的解决方案是在编译时将client-logger模块替换为仅用于服务器捆绑包的模块。rewrite-client-logger

我已经尝试过 WebpackNormalModuleReplacementPluginalias,甚至编写了我自己的加载器,它们都不起作用,这是我的别名的Webpack 配置

这是 repro 的演示链接:https ://github.com/stanleyyylau/demo

复制步骤:

预期结果:

实际结果:

标签: webpack

解决方案


您可以通过更改webpack-node-externals配置以包含记录器来解决此问题。这样,别名规则就有机会发挥作用。尝试

externals: [nodeExternals({
    whitelist: ['client-logger']
})]

推荐阅读