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

如何通过Webpack暴露函数供内联脚本调用?

解决expose-loader全局作用域冲突问题

你的代码里存在两处关键问题,导致了冲突错误:

  • derpFunc.js里错误引用了未定义的appCalendar,且手动挂载全局变量的操作和expose-loader的功能重复
  • 导出语句和暴露逻辑不匹配

修正步骤

  1. 修复derpFunc.js代码
    删掉手动挂载全局的代码,确保导出的是正确的函数:
function derpFunc(){
    console.log('derp');
}
// 移除手动挂载全局的代码,交给expose-loader处理
export { derpFunc };
  1. 确认webpack配置有效性
    你的配置已经添加了override: true,只需确保暴露的变量名和导出的函数一致即可:
// Expose Legacy functions for use outside Webpack build
{
    test: require.resolve('./derpFunc.js'),
    use: [
        {
            loader: 'expose-loader',
            options: {
                exposes: 'derpFunc',
                override: true // 允许覆盖已存在的全局变量,解决冲突提示
            }
        }
    ]
},

错误原因说明

  • 错误1:注释导出语句后,Webpack无法识别该模块,expose-loader无法获取要暴露的函数,导致全局作用域中不存在derpFunc,调用时触发类型错误。
  • 错误2:手动在代码中挂载全局变量(你写错成了appCalendar),导致全局提前存在同名变量,expose-loader默认禁止覆盖,触发安全提示;开启override: true后,loader会强制覆盖已存在的全局变量,解决冲突。

临时兼容验证

编译完成后,内联脚本直接调用derpFunc()即可正常执行,无需额外操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:15:20