JQuery UI 和 RequireJS 映射小部件不正确
JQuery UI and RequireJS are mapping widgets incorrectly
我正在使用 RequireJS to load Knockout Sortable (v1.10), which has jquery-ui (v1.12) 作为依赖项。这两个都是通过 bower 添加的,并放在我的 require 配置中。但是,我遇到了一些奇怪的问题,require 错误地获取了一些小部件的路径。
我的 jquery-ui 路径如下:
paths: {
...
'jquery-ui': '/lib/jquery-ui/jquery-ui',
...
// or the .min version like below:
// 'jquery-ui': '/lib/jquery-ui/jquery-ui.min',
}
jquery-ui 内容加载没有任何问题,但组件出现问题。我的控制台日志看起来像这样:
GET http://localhost:5000/lib/jquery-ui/jquery-ui/ui/widgets/draggable.js net::ERR_ABORTED
require.min.js:5 Uncaught Error: Script error for "jquery-ui/ui/widgets/draggable", needed by: knockout-sortable
http://requirejs.org/docs/errors.html#scripterror
at l (require.min.js:5)
at HTMLScriptElement.onScriptError (require.min.js:5)
我在 3 个单独的小部件上遇到了同样的错误。小部件位于 /lib/jquery-ui/ui/widgets/*.js
,但 RequireJS 正在添加第二个 jquery-ui
目录。
Knockout Sortable 正在请求这样的资源:
require("jquery-ui/ui/widgets/sortable");
require("jquery-ui/ui/widgets/draggable");
require("jquery-ui/ui/widgets/droppable");
我已经尝试了所有的匀场和映射方式,但似乎没有任何效果,所以我有点不知所措。
还要注意,如果我使用 jquery-ui.min,路径会变成:
http://localhost:5000/lib/jquery-ui/jquery-ui.min/ui/widgets/*.js
经过一些修改,我发现我需要稍微修改我的路径如下:
paths: {
...
'jquery-ui': ['/lib/jquery-ui/jquery-ui.min'],
'jquery-ui/ui': ['/lib/jquery-ui/ui'],
...
}
事实证明,稍微更具体的定义版本允许我覆盖正在发生的奇怪行为。当我使用另一个名为 NestedSortable 的包时,问题变得复杂了两倍。此软件包尚未更新以处理 jQuery UI 1.12+ 的新文件夹结构。所以我不得不 fork 那个 repo 并创建一个新的 bower 包。
我正在使用 RequireJS to load Knockout Sortable (v1.10), which has jquery-ui (v1.12) 作为依赖项。这两个都是通过 bower 添加的,并放在我的 require 配置中。但是,我遇到了一些奇怪的问题,require 错误地获取了一些小部件的路径。
我的 jquery-ui 路径如下:
paths: {
...
'jquery-ui': '/lib/jquery-ui/jquery-ui',
...
// or the .min version like below:
// 'jquery-ui': '/lib/jquery-ui/jquery-ui.min',
}
jquery-ui 内容加载没有任何问题,但组件出现问题。我的控制台日志看起来像这样:
GET http://localhost:5000/lib/jquery-ui/jquery-ui/ui/widgets/draggable.js net::ERR_ABORTED
require.min.js:5 Uncaught Error: Script error for "jquery-ui/ui/widgets/draggable", needed by: knockout-sortable
http://requirejs.org/docs/errors.html#scripterror
at l (require.min.js:5)
at HTMLScriptElement.onScriptError (require.min.js:5)
我在 3 个单独的小部件上遇到了同样的错误。小部件位于 /lib/jquery-ui/ui/widgets/*.js
,但 RequireJS 正在添加第二个 jquery-ui
目录。
Knockout Sortable 正在请求这样的资源:
require("jquery-ui/ui/widgets/sortable");
require("jquery-ui/ui/widgets/draggable");
require("jquery-ui/ui/widgets/droppable");
我已经尝试了所有的匀场和映射方式,但似乎没有任何效果,所以我有点不知所措。
还要注意,如果我使用 jquery-ui.min,路径会变成:
http://localhost:5000/lib/jquery-ui/jquery-ui.min/ui/widgets/*.js
经过一些修改,我发现我需要稍微修改我的路径如下:
paths: {
...
'jquery-ui': ['/lib/jquery-ui/jquery-ui.min'],
'jquery-ui/ui': ['/lib/jquery-ui/ui'],
...
}
事实证明,稍微更具体的定义版本允许我覆盖正在发生的奇怪行为。当我使用另一个名为 NestedSortable 的包时,问题变得复杂了两倍。此软件包尚未更新以处理 jQuery UI 1.12+ 的新文件夹结构。所以我不得不 fork 那个 repo 并创建一个新的 bower 包。