0

我正在使用 auserFunction在自定义 Forge Viewer 扩展中查询属性数据库。这在使用npm run serve. 但是,当我将网站部署到网络(使用npm run build)时,该功能不再执行。错误说:SyntaxError: Function statements require a function name。这是因为,根据文档,执行的函数executeUserFunction 必须命名为userFunction.

经过进一步检查,我发现这是因为 Vue & Webpack 的修改功能(由 执行terser-webpack-plugin),它重命名变量并删除函数名称以减小文件大小。

我尝试了许多不同的方法,从将函数作为扩展类的一部分到将其移动到全局 JS 范围,但没有任何帮助。我还尝试objects.js从重整中排除(这是我编写的扩展名的名称),但这也不起作用。

如何配置 terser 以停止修改这一变量?

4

1 回答 1

0

我最终想出了一种可行的方法:

将以下内容添加到vue.config.js

module.exports = {
  ...
  chainWebpack: config => {
    config.optimization.minimizer('terser').tap(args => {
      // eslint-disable-next-line no-param-reassign
      args[0].terserOptions.keep_fnames = true;
      return args;
    });
  },
};

这将防止 terser 删除函数名称,并使其userFunction仍然有效。Autodesk 奇怪的设计选择需要一个函数名称,但至少它现在可以工作了:)

于 2021-02-17T08:40:57.353 回答