jQuery UI 小部件在缩小后停止工作

jQuery UI widgets stop working after minifying

最近我不得不将我们的 jquery 版本从 1.x 更新到 3.5。因此,我还必须将 Jquery UI 更新为 1.12。我利用这个机会将我们的 js 依赖项导入为 node_modules,而不是仅仅在我们的存储库中有一个副本。

当 运行 我们的 WebApp 在 IDE 中时,一切都按预期正常工作。但是,一旦我使用 pyInstaller 构建 .exe(运行 一项将所有内容缩小到单个 app.min.js 的繁重任务),我就会收到错误消息“g.sortable 不是函数” . jquery.transit.

也会出现同样的问题

package.json:

{
  "dependencies": {
    // snip
    "jquery": "3.5.1",
    "jquery-ui": "1.12.1",
    "jquery.iframe-transport": "1.0.0",
    "jquery.transit": "0.9.12",
  }
}

configuration.js:

require.config({
  paths: {
   // snip
   'ui.sortable': '<...>/3rdparty/js/node_modules/angular-ui-sortable/dist/sortable',
   'jquery': '<...>/3rdparty/js/node_modules/jquery/dist/jquery',
   'jquery.transit': '<...>/3rdparty/js/node_modules/jquery.transit/jquery.transit',
   'jquery-ui': '<...>/3rdparty/js/node_modules/jquery-ui-dist/jquery-ui',
  }
})

Gruntfile.js:

module.exports = function (grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('<...>/3rdparty/js/package.json'),
      requirejs: {
        compile: {
          options: {
            baseUrl: '<...>/js',
            mainConfigFile: '<...>/js/configuration.js',
            optimize: 'none'
          }
        }
      },
    ts: { ... },
    sass: { ... },
    uglify: {
      'js': {
        files: [
          {
            expand: true,
            src: [
              'app/**/*.js',
              '!app/**/3rdparty/**/*.js',
              '!app/<...>/js/configuration.js',
              '!app/<...>/js/patch.js'
            ]
          }
        ],
        options: {
          compress: true,
          mangle: false
        }
      }
    }
  });
};

同样,javascript 文件似乎可以正常工作,因为当我在 pycharm 中启动网络服务时没有问题。只有当我编译和缩小 jquery UI 小部件停止工作的所有内容时。我开始使用 npm 的其他外部库工作得很好。

在这一点上我有点无能为力。

所以,我的问题的解决方案就是

import 'jquery.transit';
import 'jquery.ui';

在我的一个 TypeScript 文件中。显然在整个项目中从未发生过任何地方。它在我更新之前工作,因为我们使用的 jqueryUI 版本将其中的 AMD 部分注释掉了。