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 部分注释掉了。
最近我不得不将我们的 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 部分注释掉了。