【发布时间】:2017-09-05 12:25:34
【问题描述】:
所以我正在尝试将 JQueryUI 与 TypeScript 一起使用,到目前为止,我已经安装了带有 npm install jquery-ui-dist 的 JQueryUI 和带有 npm install jquery 的 JQuery。我还使用 npm install --save-dev @types/jquery 和 npm install --save-dev @types/jquery-ui 添加了来自definitelyTyped 的定义文件。
我有以下文件(部分省略):
///<reference path="../../node_modules/@types/jqueryui/index.d.ts"/>
import * as $ from "jquery";
import "jquery-ui";
export default class Resizer {
public static extraMargin = 5;
public static setVerticalResizer(...) {
...
let topElem: HTMLElement = <HTMLElement> cardElem.querySelector(".my-class");
$(topElem).resizable({
...
});
}
}
在构建和运行时出现以下错误:
Uncaught TypeError: r(...).resizable is not a function
所以我猜我导入 JQueryUI 的方式有问题?或者可能没有正确安装 JQueryUI?尽管导入和定义在 VS Code 中似乎工作正常。
这也是我在 HTML 文件中使用它们的方式:
<script src="node_modules/jquery-ui-dist/jquery-ui.mis.js"></script>
<link rel="stylesheet" href="node_modules/jquery-ui-dist/jquery-ui.min.css">
关于如何解决问题并将 JQueryUI 与 TypeScript 结合使用的任何想法?
【问题讨论】:
-
尝试使用
import "jquery-ui-dist/jquery-ui";导入jquery-ui,让我知道发生了什么。你在用 webpack 吗? -
@Diullei 感谢您的评论,但似乎抛出了同样的错误:
Uncaught TypeError: n(...).resizable is not a function -
删除脚本标签。这不是 TypeScript 错误,这是运行时错误。您正在加载
jquery-ui两次!一次在脚本标签<script src="node_modules/jquery-ui-dist/jquery-ui.mis.js"></script>,然后再次在你的模块中用import * as $ from "jquery"; import "jquery-ui";模块中的代码是正确的,但是脚本标签会导致失败。 -
这解决了!如果您对此解释做出回答,我会将其标记为解决方案@AluanHaddad
-
@SashaFonseca 很高兴您的问题得到解决。我添加了我的评论(稍作编辑)作为答案,谢谢。
标签: javascript jquery-ui typescript npm definitelytyped