停止 Aurelia CLI 和 Visual Studio 2017 版本之间的 TypeScript 定义怪胎
Stop the TypeScript definition wack-a-mole between Aurelia CLI and Visual Studio 2017 builds
我在 NET Core 项目中有一个 Aurelia 项目。我可以使用 Aurelia CLI 构建项目,但是 Visual Studio 构建失败并出现以下 TypeScript 错误:
Build:Cannot find name 'RequestInit'.
Build:Cannot find name 'Request'.
Build:Cannot find name 'Response'.
这些错误大部分来自 aurelia-fetch-client
。
接下来,我尝试通过安装软件包 @types/whatwg-fetch
来解决问题。 Visual Studio 错误消失了,但现在 Aurelia CLI 不会构建。抛出的错误是:
Cannot redeclare block-scoped variable 'fetch'.
Duplicate identifier 'HeadersInit'.
Duplicate identifier 'Headers'.
Duplicate identifier 'RequestInfo'.
Duplicate identifier 'Request'.
Duplicate identifier 'Response'.
... and many more duplicate identifiers.
冲突发生在 whatwg-fetch 和 lib.dom.d.ts 中。如何让两个版本恢复绿色?
更新
我在 lib.dom.d.ts
中看到请求定义,所以我觉得 Aurelia CLI 正在工作并且 Visual Studio 已损坏。当我有以下 tsconfig 时,为什么 Visual Studio 不接受这些类型:
"compileOnSave": false,
"compilerOptions": {
"sourceMap": true,
"target": "es5",
"module": "amd",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"lib": ["es2017", "dom"]
},
"exclude": [
"node_modules",
"aurelia_project"
],
"filesGlob": [
"./src/**/*.ts",
"./test/**/*.ts",
"./custom_typings/**/*.d.ts"
]
更新 2 如果我将 lib.dom.d.ts 文件添加到 tsconfig 中的文件数组,错误会在 Visual Studio 中消失。
"files": [
"./node_modules/typescript/lib/lib.es2017.d.ts",
"./node_modules/typescript/lib/lib.es2017.object.d.ts",
"./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
"./node_modules/typescript/lib/lib.es2017.string.d.ts",
"./node_modules/typescript/lib/lib.dom.d.ts"
]
一定有更好的方法。
我之前在 Stack Overflow 上设法解决了很多相同的错误,请看这里,看看这对你是否有用:
也许您已经解决了 link 中的大部分问题,或者这可能不适用于您使用 Aurelia CLI 的具体情况,但是-- 这个命令:npm install typescript@2.1.5 --save
对我和其他一些类似的错误来自 URL
和 Fetch
特别是。
@mgiesa 提供的答案是禁用 Visual Studio TypeScript 编译。各种构建工具都在竞争,并且具有不同的 TypeScript 配置。自最初的问题以来,Visual Studio 版本的发布变得更加容易。
我在 NET Core 项目中有一个 Aurelia 项目。我可以使用 Aurelia CLI 构建项目,但是 Visual Studio 构建失败并出现以下 TypeScript 错误:
Build:Cannot find name 'RequestInit'.
Build:Cannot find name 'Request'.
Build:Cannot find name 'Response'.
这些错误大部分来自 aurelia-fetch-client
。
接下来,我尝试通过安装软件包 @types/whatwg-fetch
来解决问题。 Visual Studio 错误消失了,但现在 Aurelia CLI 不会构建。抛出的错误是:
Cannot redeclare block-scoped variable 'fetch'.
Duplicate identifier 'HeadersInit'.
Duplicate identifier 'Headers'.
Duplicate identifier 'RequestInfo'.
Duplicate identifier 'Request'.
Duplicate identifier 'Response'.
... and many more duplicate identifiers.
冲突发生在 whatwg-fetch 和 lib.dom.d.ts 中。如何让两个版本恢复绿色?
更新
我在 lib.dom.d.ts
中看到请求定义,所以我觉得 Aurelia CLI 正在工作并且 Visual Studio 已损坏。当我有以下 tsconfig 时,为什么 Visual Studio 不接受这些类型:
"compileOnSave": false,
"compilerOptions": {
"sourceMap": true,
"target": "es5",
"module": "amd",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"lib": ["es2017", "dom"]
},
"exclude": [
"node_modules",
"aurelia_project"
],
"filesGlob": [
"./src/**/*.ts",
"./test/**/*.ts",
"./custom_typings/**/*.d.ts"
]
更新 2 如果我将 lib.dom.d.ts 文件添加到 tsconfig 中的文件数组,错误会在 Visual Studio 中消失。
"files": [
"./node_modules/typescript/lib/lib.es2017.d.ts",
"./node_modules/typescript/lib/lib.es2017.object.d.ts",
"./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts",
"./node_modules/typescript/lib/lib.es2017.string.d.ts",
"./node_modules/typescript/lib/lib.dom.d.ts"
]
一定有更好的方法。
我之前在 Stack Overflow 上设法解决了很多相同的错误,请看这里,看看这对你是否有用:
也许您已经解决了 link 中的大部分问题,或者这可能不适用于您使用 Aurelia CLI 的具体情况,但是-- 这个命令:npm install typescript@2.1.5 --save
对我和其他一些类似的错误来自 URL
和 Fetch
特别是。
@mgiesa 提供的答案是禁用 Visual Studio TypeScript 编译。各种构建工具都在竞争,并且具有不同的 TypeScript 配置。自最初的问题以来,Visual Studio 版本的发布变得更加容易。