将ServiceStack JsonServiceClient与Angular Cli一起使用

时间:2017-05-07 00:51:54

标签: angular servicestack angular-cli

我试图使用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而没有问题。

1 个答案:

答案 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,则不应再出现此错误。