我刚刚在NuGet中运行更新来更新我的软件包。之后,我再也无法编译了,我收到了上述错误。
jquery定义文件在我的项目中。但由于某种原因,引导程序定义文件无法再找到它。
自从我参与这个项目以来已经有一段时间了。我非常确定在更新之前我的定义文件位于一个完全不同的目录中。但是大多数代码和文件结构都是由Visual Studio NuGet包自动创建的。
这些链接或引用位于何处,以便可以正确找到定义文件?我对TypeScript非常陌生,所以如果你能详细解释或提供进一步阅读的链接,我们将不胜感激
修改
我发现这些被称为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,看起来是自动生成的。那么为什么我需要改变这个呢?
答案 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"
]
}
}