Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决Typescript生成中的错误“找不到模块‘jquery’”_Javascript_Jquery_Typescript_Asp.net Core_Requirejs - Fatal编程技术网

Javascript 如何解决Typescript生成中的错误“找不到模块‘jquery’”

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

我目前在ts文件import$=requirejquery的顶部有这个;我这样做是因为我试图在我的typescript文件中使用jquery,但我似乎无法让它编译,因为它返回标题中所述的错误。我正在使用ASP.NET内核

脚本文件夹

tsonfig.json

梅因酒店

ASP.NET MVC布局页面

TS文件


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"],
       ...
   }
}