You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HTML script标签中正常引入webpack 5打包的库

问题根因

webpack 5 对 UMD 打包的默认全局挂载对象做了调整,从 webpack 4 的 this 改成了 self,普通浏览器通过 script 标签直接加载的场景下,会导致库无法正常挂载到 window 全局对象上,所以你参考的 webpack 4 旧教程的配置不再生效。

修复方案

只需要在 webpack.config.js 的 output 配置中新增 globalObject 字段指定挂载对象即可,修改后的完整配置如下:

// webpack.config.js
module.exports = {
    mode: "development",
    devServer: {
        port: 3030,
    },
    entry: {
        lib: "./src/index.js",
    },
    output: {
        filename: `[name].js`,
        // 新增这一行,指定UMD模式下全局挂载对象为this,浏览器环境下this指向window
        globalObject: 'this',
        libraryTarget: "umd",
        library: "MyLib"
    },
}

webpack 5 也更推荐用对象格式写 library 配置,可读性更强,等价写法如下:

output: {
    filename: `[name].js`,
    globalObject: 'this',
    library: {
        name: 'MyLib',
        type: 'umd'
    }
}

验证效果

修改配置后重新启动打包服务,打开控制台即可正常访问:

  • MyLib.test() 会返回 42
  • window.MyLib 也可以正常拿到导出的库对象

内容的提问来源于stack exchange,提问作者Ennoriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 17:12:01