我试图使用ServiceStack打字稿客户端(https://www.npmjs.com/package/servicestack-client)@version 0.0.34 使用角度cli版本1.0生成的Angular 4.0应用程序。 我跑的时候
ng serve
我收到以下错误:
ERROR in D:/dev/STASH/Meter/meters-web/src/meter-analytics/node_modules/servicestack-client/src/index.d.ts (234,14): Cannot find name 'Headers'.
(path redacted)/node_modules/servicestack-client/src/index.d.ts (240,26): Cannot find name 'Request'.
(path redacted)/node_modules/servicestack-client/src/index.d.ts (241,27): Cannot find name 'Response'.
(path redacted)/node_modules/servicestack-client/src/index.d.ts (242,28): Cannot find name 'Response'.
(path redacted)/node_modules/servicestack-client/src/index.d.ts (266,21): Cannot find name 'Response'.
我已尝试在npm页面上建议的这个问题的故障排除提示,以便servicestack-client引入es2016库
{
"compilerOptions": {
"lib": [
"es2016"
]
}
}
或引入获取类型定义
npm install @types/whatwg-fetch --save-dev
但都没有解决问题。
我正在使用带有角度2.0的json服务客户端@ 0.0.33和角度cli的beta-19而没有问题。
答案 0 :(得分:1)
这些错误是由于缺少W3C提取库的类型定义。从以下位置手动添加类型定义:
npm install @types/whatwg-fetch --save-dev
应解决此问题,否则如果您在 2.2 + 之后升级到TypeScript,则在引用内置 es2016 lib时,提取类型定义将可用,例如:
{
"compilerOptions": {
"lib": [
"es2016"
]
}
}
如果您在VS.NET 2017中遇到这些设计器错误,那是因为它仍在使用较旧的TypeScript v2.1版本,该版本的内置类型定义中不包含W3C提取定义。这将在VS2017的下一个版本(或现在可在current VS2017 preview中使用)中解决,该版本将能够使用您的本地版本的TypeScript。在此期间,您可以通过修改.csproj
以包含<TypeScriptCompileBlocked>
来阻止VS2017 TypeScript错误阻止构建,例如:
<TypeScriptToolsVersion>2.3</TypeScriptToolsVersion>
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
如果您使用的是ng-serve
,则应该使用您当地的TypeScript版本,因此如果您升级到TypeScript 2.2或2.3,则不应再出现此错误。