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

Webpack打包破坏FiveM全局对象问题求助

FiveM Webpack压缩导致全局exports失效的解决办法

最可靠的配置方案:强制Webpack保留全局标识符

直接修改Webpack配置,从两个层面阻止exports和global被压缩重命名:

  • 添加externals声明
    在webpack.config.js里,把exports和global标记为外部依赖,让Webpack完全不处理它们:

    module.exports = {
      // 其他已有配置
      externals: {
        exports: 'exports',
        global: 'global'
      }
    };
    
  • 配置Terser压缩插件保留指定变量
    Webpack默认用Terser做代码压缩,需要在插件配置里把exports和global加入保留名单:

    const TerserPlugin = require('terser-webpack-plugin');
    
    module.exports = {
      // 其他已有配置
      optimization: {
        minimizer: [
          new TerserPlugin({
            terserOptions: {
              mangle: {
                // 强制保留这些变量名不被混淆
                reserved: ['exports', 'global']
              }
            }
          })
        ]
      }
    };
    

备选写法:避开Webpack的压缩检测

如果不想改配置,也可以换一种写法绑定导出,用字符串索引的方式让Webpack不会重命名键名:

// 替代原来的exports("name", fn)
(window as any).exports['name'] = function() {
  // 你的函数逻辑
};

这种写法不管bundle大小,都能让游戏引擎正常识别导出的函数。

验证方法

打包完成后打开输出的bundle文件,搜索exports或global.exports,确认它们没有被改成e、t这类短名字,然后测试跨资源的函数调用是否正常。

内容的提问来源于stack exchange,提问作者Pau Ibáñez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:57:40