Javascript 如何解决Typescript生成中的错误“找不到模块‘jquery’”
我目前在ts文件import$=requirejquery的顶部有这个;我这样做是因为我试图在我的typescript文件中使用jquery,但我似乎无法让它编译,因为它返回标题中所述的错误。我正在使用ASP.NET内核 脚本文件夹 tsonfig.json 梅因酒店 ASP.NET MVC布局页面 TS文件Javascript 如何解决Typescript生成中的错误“找不到模块‘jquery’”,javascript,jquery,typescript,asp.net-core,requirejs,Javascript,Jquery,Typescript,Asp.net Core,Requirejs,我目前在ts文件import$=requirejquery的顶部有这个;我这样做是因为我试图在我的typescript文件中使用jquery,但我似乎无法让它编译,因为它返回标题中所述的错误。我正在使用ASP.NET内核 脚本文件夹 tsonfig.json 梅因酒店 ASP.NET MVC布局页面 TS文件 TypeScript有两种模块: 隐式定义为磁盘上的文件。 由编码人员明确定义,表示即使此模块不是磁盘上的文件,我保证它存在,下面是它包含的类型。 在您的代码中,./DataTableSe
TypeScript有两种模块: 隐式定义为磁盘上的文件。 由编码人员明确定义,表示即使此模块不是磁盘上的文件,我保证它存在,下面是它包含的类型。 在您的代码中,./DataTableSetting模块属于第一类,而jquery模块属于第二类。TypeScript可以通过查看文件系统并发现其中的文件来验证DataTableSetting模块是否存在 但对于jquery,TypeScript在磁盘上找不到文件。所以它需要你的帮助。它需要你告诉它:别担心,TypeScript,你找不到这个文件。我将确保这个模块在需要时确实存在,下面是它将包含的类型 告诉TypeScript模块存在(即使它不在磁盘上)的方法是显式声明它,如下所示:
declare module "jquery"
{
class JQueryStatic
{
...
}
...
}
/// <reference path="../DefinitelyTyped/jquery.d.ts" />
这个声明就是jquery.d.ts文件所包含的内容。所以你实际上不需要自己写这个声明
然而,问题是:TypeScript编译器如何知道在哪里查找该声明
实际上,有两种方法可以指明声明的位置
首先,您可以在player-page.ts的顶部包含一个///指令,如下所示:
declare module "jquery"
{
class JQueryStatic
{
...
}
...
}
/// <reference path="../DefinitelyTyped/jquery.d.ts" />
.您是否将jquery.d.ts包含在ts文件中?@Louis hi,是的,我尝试过amd模块。。不工作,所以我换了umd@Louis如果你仔细阅读这个问题,你会在顶部看到一行:我似乎无法编译它。对于在StackOverflow上提问的人来说,混淆术语、库、概念等并非闻所未闻。在这种情况下,如果OP混淆了TS编译器和RequireJS,我也不会感到惊讶。@FyodorSoikin是的,我没有仔细阅读,错过了这一点。我相信你关于混淆的说法是对的。@ifelabolz请发布你得到的实际错误消息,这是非常有用的解释。让我的VsCode类型脚本与jquery thx一起工作。
import $ = require("jquery");
import DataTables = require("./DataTableSetting");
export class Player {
private playerTable: HTMLTableElement;
constructor(playerTable: HTMLTableElement) {
this.playerTable = playerTable;
this.wireEvents(this.playerTable);
}
initDatatable(playerTable: HTMLTableElement) {
$(playerTable).DataTable();
}
private wireEvents(playerTable: HTMLTableElement): void {
const btnsUpdatePlayer = playerTable.querySelectorAll(".btnUpdatePlayer");
Array.prototype.forEach.call(btnsUpdatePlayer,
(btn: HTMLButtonElement) => {
btn.addEventListener("click", (e : Event)=> {
console.log(e.target);
}, false);
});
}
}
window.onload = () => {
var $dtPlayerTable = document.getElementById("tblPlayer");
var playerTable: HTMLTableElement = <HTMLTableElement>$dtPlayerTable;
const player = new Player(playerTable);
};
declare module "jquery"
{
class JQueryStatic
{
...
}
...
}
/// <reference path="../DefinitelyTyped/jquery.d.ts" />
{
"compilerOptions": {
"typeRoots" : ["wwwroot/js/DefinitelyTyped"],
...
}
}