找不到' jquery'的类型定义文件

时间:2017-02-01 20:57:00

标签: jquery twitter-bootstrap visual-studio typescript nuget-package

我刚刚在NuGet中运行更新来更新我的软件包。之后,我再也无法编译了,我收到了上述错误。

jquery定义文件在我的项目中。但由于某种原因,引导程序定义文件无法再找到它。

自从我参与这个项目以来已经有一段时间了。我非常确定在更新之前我的定义文件位于一个完全不同的目录中。但是大多数代码和文件结构都是由Visual Studio NuGet包自动创建的。

这些链接或引用位于何处,以便可以正确找到定义文件?我对TypeScript非常陌生,所以如果你能详细解释或提供进一步阅读的链接,我们将不胜感激

code and error

file tree

修改

我发现这些被称为Triple-Slash Directives。但那些页面并没有足以让我理解这个错误。

它告诉我,<reference types="..."/>应该用于@types个包,这是我认为的.d.ts个文件。我尝试将jquery.d.ts的名称更改为index.d.ts。我尝试过包括../jquery/jquery.d.ts等整个路径。这些都没有奏效。

最后,我在angular.d.ts中找到了以下一行:

/// <reference path="../jquery/jquery.d.ts" />

我将其复制到引导程序index.d.ts中,这似乎可以解决错误。

但这对我没有意义。首先,我尝试链接到定义文件,而不是TypeScript文件。根据上面的文章,我应该使用reference types,而不是reference path。但是reference types不起作用。我在这里缺少什么?

文章还说:

  

仅在手动创作d.ts文件时才使用这些指令。

我没有写这些文件。他们来自NuGet,看起来是自动生成的。那么为什么我需要改变这个呢?

4 个答案:

答案 0 :(得分:13)

  

他们来自NuGet并期待自动生成。

不要将nuget用于类型定义。 NPM是要走的路。

npm install @types/jquery -D 

然后你可以:

<reference types="jquery"/>

欢迎来到

答案 1 :(得分:1)

我发现在安装@ types / jquery之后,在jquery.slim.d.ts中将/// <reference types="jquery" />更改为/// <reference path="../JQuery.d.ts" />对我来说解决了这个问题。

答案 2 :(得分:0)

一个选项是将您的 tsconfig.json 上的属性 typeRoots 设置为实际(如果您的项目还没有,则需要创建一个)包含定义文件的文件夹的路径,如果您使用的是Nuget和DefinitelyTyped,则应为 Scripts 文件夹内的 typings 文件夹。因此:

{
  "compilerOptions": {
    "typeRoots": [
      "./Scripts/typings"
    ]
  }
}

basarat发布的是2020年正确的前进方式,但是也许您正在从事一个遗留项目,该项目目前无法迁移到NPM。

答案 3 :(得分:0)

希望在作为 Angular 项目的一部分收到此错误时提供更新的答案。运行单元测试时出现错误,我的问题是在我的 tsconfig.json 中,我将 jQuery 类型列为:

{
  "compilerOptions": {
    ...,
    "types": [
      "node, jQuery"
    ]
  }
}

我的解决方法是全部使用小写:

{
  "compilerOptions": {
    ...,
    "types": [
      "node, jquery"
    ]
  }
}