npm – Angular 2找不到Promise,Map,Set和Iterator

前端之家收集整理的这篇文章主要介绍了npm – Angular 2找不到Promise,Map,Set和Iterator前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
安装角度2后,我的typescript编译器不断得到一些错误,找不到Promise,Map,Set和Iterator。
直到现在我忽略了他们,但现在我需要Promise,所以我的代码将工作。
  1. import {Component} from 'angular2/core';
  2. @Component({
  3. selector: 'greeting-cmp',template: `<div>{{ asyncGreeting | async}}</div>`
  4. })
  5. export class GreetingCmp {
  6. asyncGreeting: Promise<string> = new Promise(resolve => {
  7. // after 1 second,the promise will resolve
  8. window.setTimeout(() => resolve('hello'),1000);
  9. });
  10. }
  11.  
  12. Additional information:
  13. npm -v is 2.14.12
  14. node -v is v4.3.1
  15. typescript v is 1.6

错误

  1. ................ERROS OF MY CODE.................
  2. C:\Users\armyTik\Desktop\angular2\greeting_cmp.ts
  3. Error:(7,20) TS2304: Cannot find name 'Promise'.
  4. Error:(7,42) TS2304: Cannot find name 'Promise'.
  5. .........................................
  6. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\platform\browser.d.ts
  7. Error:(77,90) TS2304: Cannot find name 'Promise'.
  8. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\application_ref.d.ts
  9. Error:(83,60) TS2304: Cannot find name 'Promise'.
  10. Error:(83,146) TS2304: Cannot find name 'Promise'.
  11. Error:(96,51) TS2304: Cannot find name 'Promise'.
  12. Error:(96,147) TS2304: Cannot find name 'Promise'.
  13. Error:(133,90) TS2304: Cannot find name 'Promise'.
  14. Error:(171,81) TS2304: Cannot find name 'Promise'.
  15. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\change_detection\parser\locals.d.ts
  16. Error:(3,14) TS2304: Cannot find name 'Map'.
  17. Error:(4,42) TS2304: Cannot find name 'Map'.
  18. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\debug\debug_node.d.ts
  19. Error:(14,13) TS2304: Cannot find name 'Map'.
  20. Error:(24,17) TS2304: Cannot find name 'Map'.
  21. Error:(25,17) TS2304: Cannot find name 'Map'.
  22. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\di\provider.d.ts
  23. Error:(436,103) TS2304: Cannot find name 'Map'.
  24. Error:(436,135) TS2304: Cannot find name 'Map'.
  25. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\compiler.d.ts
  26. Error:(12,50) TS2304: Cannot find name 'Promise'.
  27. Error:(16,41) TS2304: Cannot find name 'Promise'.
  28. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\dynamic_component_loader.d.ts
  29. Error:(108,136) TS2304: Cannot find name 'Promise'.
  30. Error:(156,150) TS2304: Cannot find name 'Promise'.
  31. Error:(197,128) TS2304: Cannot find name 'Promise'.
  32. Error:(203,127) TS2304: Cannot find name 'Promise'.
  33. Error:(204,141) TS2304: Cannot find name 'Promise'.
  34. Error:(205,119) TS2304: Cannot find name 'Promise'.
  35. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\render\api.d.ts
  36. Error:(13,13) TS2304: Cannot find name 'Map'.
  37. Error:(14,84) TS2304: Cannot find name 'Map'.
  38. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\async.d.ts
  39. Error:(27,33) TS2304: Cannot find name 'Promise'.
  40. Error:(28,45) TS2304: Cannot find name 'Promise'.
  41. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\collection.d.ts
  42. Error:(1,25) TS2304: Cannot find name 'MapConstructor'.
  43. Error:(2,25) TS2304: Cannot find name 'SetConstructor'.
  44. Error:(4,27) TS2304: Cannot find name 'Map'.
  45. Error:(4,39) TS2304: Cannot find name 'Map'.
  46. Error:(7,9) TS2304: Cannot find name 'Map'.
  47. Error:(8,30) TS2304: Cannot find name 'Map'.
  48. Error:(11,43) TS2304: Cannot find name 'Map'.
  49. Error:(12,27) TS2304: Cannot find name 'Map'.
  50. Error:(14,23) TS2304: Cannot find name 'Map'.
  51. Error:(15,25) TS2304: Cannot find name 'Map'.
  52. Error:(95,41) TS2304: Cannot find name 'Set'.
  53. Error:(96,22) TS2304: Cannot find name 'Set'.
  54. Error:(97,25) TS2304: Cannot find name 'Set'.
  55. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\lang.d.ts
  56. Error:(13,17) TS2304: Cannot find name 'Map'.
  57. Error:(14,17) TS2304: Cannot find name 'Set'.
  58. Error:(78,59) TS2304: Cannot find name 'Map'.
  59. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\promise.d.ts
  60. Error:(2,14) TS2304: Cannot find name 'Promise'.
  61. Error:(7,32) TS2304: Cannot find name 'Promise'.
  62. Error:(8,38) TS2304: Cannot find name 'Promise'.
  63. Error:(9,35) TS2304: Cannot find name 'Promise'.
  64. Error:(9,93) TS2304: Cannot find name 'Promise'.
  65. Error:(10,34) TS2304: Cannot find name 'Promise'.
  66. Error:(11,32) TS2304: Cannot find name 'Promise'.
  67. Error:(11,149) TS2304: Cannot find name 'Promise'.
  68. Error:(12,43) TS2304: Cannot find name 'Promise'.
  69. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\headers.d.ts
  70. Error:(43,59) TS2304: Cannot find name 'Map'.
  71. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\url_search_params.d.ts
  72. Error:(11,16) TS2304: Cannot find name 'Map'.
  73. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\browser\browser_adapter.d.ts
  74. Error:(75,33) TS2304: Cannot find name 'Map'.
  75. C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\dom\dom_adapter.d.ts
  76. Error:(85,42) TS2304: Cannot find name 'Map'.
  77. C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\CoreOperators.d.ts
  78. Error:(35,67) TS2304: Cannot find name 'Promise'.
  79. Error:(50,66) TS2304: Cannot find name 'Promise'.
  80. Error:(89,67) TS2304: Cannot find name 'Promise'.
  81. Error:(94,38) TS2304: Cannot find name 'Promise'.
  82. Error:(94,50) TS2304: Cannot find name 'Promise'.
  83. C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\Observable.d.ts
  84. Error:(46,62) TS2304: Cannot find name 'Promise'.
  85. Error:(47,42) TS2304: Cannot find name 'Iterator'.
  86. Error:(103,74) TS2304: Cannot find name 'Promise'.
  87. Error:(103,84) TS2304: Cannot find name 'Promise'.
  88. Error:(143,66) TS2304: Cannot find name 'Promise'.
  89. Error:(158,65) TS2304: Cannot find name 'Promise'.
  90. Error:(201,66) TS2304: Cannot find name 'Promise'.
  91. Error:(206,38) TS2304: Cannot find name 'Promise'.
  92. Error:(206,50) TS2304: Cannot find name 'Promise'.
  93. C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\ForkJoinObservable.d.ts
  94. Error:(6,50) TS2304: Cannot find name 'Promise'.
  95. Error:(7,58) TS2304: Cannot find name 'Promise'.
  96. C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\FromObservable.d.ts
  97. Error:(7,38) TS2304: Cannot find name 'Promise'.
  98. Error:(7,51) TS2304: Cannot find name 'Iterator'.
  99. C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\PromiSEObservable.d.ts
  100. Error:(9,31) TS2304: Cannot find name 'Promise'.
  101. Error:(10,26) TS2304: Cannot find name 'Promise'.
ANGULAR RC4 – Angular 2.0.0 final with Typescript 2.0.0

更新于2016年9月19日

为了使这个工作与typescript 2.0.0,我做了以下。

npm install –save-dev @ types / core-js

tsconfig.json

  1. "compilerOptions": {
  2. "declaration": false,"emitDecoratorMetadata": true,"experimentalDecorators": true,"mapRoot": "./","module": "es6","moduleResolution": "node","noEmitOnError": true,"noImplicitAny": false,"outDir": "../dist/out-tsc","sourceMap": true,"target": "es5","typeRoots": [
  3. "../node_modules/@types"
  4. ],"types": [
  5. "core-js"
  6. ]
  7. }

更多关于@types与typescript 2.0.0。

> https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/
> https://www.npmjs.com/~types

安装示例:

  1. npm install --save-dev @types/core-js

重复的标识符错误

这很可能是因为重复的ecmascript 6类型已经从其他地方导入,最有可能是旧的es6-shim。

双重检查typings.d.ts确保没有引用es6。从你的typings目录中删除对es6的任何引用(如果有的话)。

例如:

这将与类型:[‘core-js’]在typings.json中冲突。

  1. {
  2. "globalDependencies": {
  3. "core-js": "registry:dt/core-js#0.0.0+20160602141332"
  4. // es6-shim will also conflict
  5. }
  6. }

在tsconfig.json中的types数组中包含core-js应该是从其中导入的唯一位置。

Angular CLI 1.0.0-beta.11-webpack

如果您使用Angular-CLI,请删除typings.json中的lib数组。这似乎与在类型中声明core-js冲突。

  1. "compilerOptions" : {
  2. ...
  3. // removed "lib": ["es6",dom"],...
  4. },"types" : ["core-js"]

Webstorm / Intellij用户使用Angular CLI

确保内置的typescript编译器被禁用。这将与CLI冲突。要使用CLI编译脚本,您可以设置ng服务配置。

Tsconfig compilerOptions lib vs types

如果你不想安装核心js类型定义,有一些es6库包含在typescript中。这些通过tsconfig中的lib:[]属性使用。

参见这里例如:https://www.typescriptlang.org/docs/handbook/compiler-options.html

Note: If –lib is not specified a default library is injected. The
default library injected is: ► For –target ES5: DOM,ES5,ScriptHost ►
For –target ES6: DOM,ES6,DOM.Iterable,ScriptHost

tl; dr

简短回答“lib”:[“es6”,“dom”]或“types”:[“core-js”]可以用来解决找不到Promise,Map,Set和Iterator。然而,使用两者将导致重复的标识符错误

猜你在找的Angularjs相关文章