Кутова: Неможливо знайти обіцянку, карту, встановити та ітератор


176

Після установки кутових, компілятор Keep Машинопис отримати деякі помилки про не знайшовши Promise, Map, Setі Iterator.

До цих пір я їх ігнорував, але тепер мені потрібно, Promiseщоб мій код міг працювати.

import {Component} from 'angular2/core';
@Component({
    selector: 'greeting-cmp',
    template: `<div>{{ asyncGreeting | async}}</div>`
})
export class GreetingCmp {
    asyncGreeting: Promise<string> = new Promise(resolve => {
// after 1 second, the promise will resolve
        window.setTimeout(() => resolve('hello'), 1000);
    });
}

Additional information:
npm -v is 2.14.12
node -v is v4.3.1
typescript v is 1.6

Помилки:

................ERROS OF MY CODE.................
    C:\Users\armyTik\Desktop\angular2\greeting_cmp.ts
    Error:(7, 20) TS2304: Cannot find name 'Promise'.
    Error:(7, 42) TS2304: Cannot find name 'Promise'.
    .........................................
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\platform\browser.d.ts
    Error:(77, 90) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\application_ref.d.ts
    Error:(83, 60) TS2304: Cannot find name 'Promise'.
    Error:(83, 146) TS2304: Cannot find name 'Promise'.
    Error:(96, 51) TS2304: Cannot find name 'Promise'.
    Error:(96, 147) TS2304: Cannot find name 'Promise'.
    Error:(133, 90) TS2304: Cannot find name 'Promise'.
    Error:(171, 81) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\change_detection\parser\locals.d.ts
    Error:(3, 14) TS2304: Cannot find name 'Map'.
    Error:(4, 42) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\debug\debug_node.d.ts
    Error:(14, 13) TS2304: Cannot find name 'Map'.
    Error:(24, 17) TS2304: Cannot find name 'Map'.
    Error:(25, 17) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\di\provider.d.ts
    Error:(436, 103) TS2304: Cannot find name 'Map'.
    Error:(436, 135) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\compiler.d.ts
    Error:(12, 50) TS2304: Cannot find name 'Promise'.
    Error:(16, 41) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\dynamic_component_loader.d.ts
    Error:(108, 136) TS2304: Cannot find name 'Promise'.
    Error:(156, 150) TS2304: Cannot find name 'Promise'.
    Error:(197, 128) TS2304: Cannot find name 'Promise'.
    Error:(203, 127) TS2304: Cannot find name 'Promise'.
    Error:(204, 141) TS2304: Cannot find name 'Promise'.
    Error:(205, 119) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\render\api.d.ts
    Error:(13, 13) TS2304: Cannot find name 'Map'.
    Error:(14, 84) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\async.d.ts
    Error:(27, 33) TS2304: Cannot find name 'Promise'.
    Error:(28, 45) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\collection.d.ts
    Error:(1, 25) TS2304: Cannot find name 'MapConstructor'.
    Error:(2, 25) TS2304: Cannot find name 'SetConstructor'.
    Error:(4, 27) TS2304: Cannot find name 'Map'.
    Error:(4, 39) TS2304: Cannot find name 'Map'.
    Error:(7, 9) TS2304: Cannot find name 'Map'.
    Error:(8, 30) TS2304: Cannot find name 'Map'.
    Error:(11, 43) TS2304: Cannot find name 'Map'.
    Error:(12, 27) TS2304: Cannot find name 'Map'.
    Error:(14, 23) TS2304: Cannot find name 'Map'.
    Error:(15, 25) TS2304: Cannot find name 'Map'.
    Error:(95, 41) TS2304: Cannot find name 'Set'.
    Error:(96, 22) TS2304: Cannot find name 'Set'.
    Error:(97, 25) TS2304: Cannot find name 'Set'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\lang.d.ts
    Error:(13, 17) TS2304: Cannot find name 'Map'.
    Error:(14, 17) TS2304: Cannot find name 'Set'.
    Error:(78, 59) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\promise.d.ts
    Error:(2, 14) TS2304: Cannot find name 'Promise'.
    Error:(7, 32) TS2304: Cannot find name 'Promise'.
    Error:(8, 38) TS2304: Cannot find name 'Promise'.
    Error:(9, 35) TS2304: Cannot find name 'Promise'.
    Error:(9, 93) TS2304: Cannot find name 'Promise'.
    Error:(10, 34) TS2304: Cannot find name 'Promise'.
    Error:(11, 32) TS2304: Cannot find name 'Promise'.
    Error:(11, 149) TS2304: Cannot find name 'Promise'.
    Error:(12, 43) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\headers.d.ts
    Error:(43, 59) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\url_search_params.d.ts
    Error:(11, 16) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\browser\browser_adapter.d.ts
    Error:(75, 33) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\dom\dom_adapter.d.ts
    Error:(85, 42) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\CoreOperators.d.ts
    Error:(35, 67) TS2304: Cannot find name 'Promise'.
    Error:(50, 66) TS2304: Cannot find name 'Promise'.
    Error:(89, 67) TS2304: Cannot find name 'Promise'.
    Error:(94, 38) TS2304: Cannot find name 'Promise'.
    Error:(94, 50) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\Observable.d.ts
    Error:(46, 62) TS2304: Cannot find name 'Promise'.
    Error:(47, 42) TS2304: Cannot find name 'Iterator'.
    Error:(103, 74) TS2304: Cannot find name 'Promise'.
    Error:(103, 84) TS2304: Cannot find name 'Promise'.
    Error:(143, 66) TS2304: Cannot find name 'Promise'.
    Error:(158, 65) TS2304: Cannot find name 'Promise'.
    Error:(201, 66) TS2304: Cannot find name 'Promise'.
    Error:(206, 38) TS2304: Cannot find name 'Promise'.
    Error:(206, 50) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\ForkJoinObservable.d.ts
    Error:(6, 50) TS2304: Cannot find name 'Promise'.
    Error:(7, 58) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\FromObservable.d.ts
    Error:(7, 38) TS2304: Cannot find name 'Promise'.
    Error:(7, 51) TS2304: Cannot find name 'Iterator'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\PromiseObservable.d.ts
    Error:(9, 31) TS2304: Cannot find name 'Promise'.
    Error:(10, 26) TS2304: Cannot find name 'Promise'.

1
Встановіть останню версію TypeScript для Visual Studio 2015 .
mylesk

Відповіді:


177

Кутовий 5 з Typescript ^ 2.0.0

Це також повинно працювати так само, як і попередні версії Angular 2+.

Щоб змусити це працювати з typecript 2.0.0, я зробив наступне.

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

tsconfig.json

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

Більше про @types з typecript 2.0.0.

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

Приклад встановлення:

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

Повторні помилки ідентифікатора

Це найімовірніше, оскільки дублікати типізацій ecmascript 6 вже імпортуються з іншого місця, швидше за все, старого es6-shim.

Перевірте typings.d.ts, чи немає посилань на це es6. Видаліть будь-які посилання на es6ваш каталог типізації, якщо у вас є такий.

Наприклад:

Це буде конфліктувати з types:['core-js']типом.json.

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332" 
    // es6-shim will also conflict
  }
}

Включення core-jsдо масиву типів у tsconfig.jsonмає бути єдиним місцем, з якого імпортується.

Кутова CLI 1.0.0-beta.30

Якщо ви використовуєте Angular-CLI, видаліть масив lib typings.json. Це, здається, суперечить оголошенню core-js у типах.

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

Користувачі Webstorm / Intellij, що використовують Angular CLI

Переконайтеся, що вбудований компілятор машинопису відключений. Це суперечить CLI. Для компіляції вашої машинописи з CLI ви можете встановити ng serveконфігурацію.

введіть тут опис зображення

Tsconfig compilerOptions lib vs types

Якщо ви не бажаєте встановлювати визначення типу js core js, є кілька бібліотек es6, які входять у комплект із typecript. Вони використовуються через lib: []власність у tsconfig.

Дивіться тут, наприклад: https://www.typescriptlang.org/docs/handbook/compiler-options.html

Примітка: Якщо --lib не вказано, вводиться бібліотека за замовчуванням. Введена бібліотека за замовчуванням: ► Для - target ES5: DOM, ES5, ScriptHost ► Для - target ES6: DOM, ES6, DOM.Iterable, ScriptHost

тл; д-р

Коротка відповідь "lib": [ "es6", "dom" ]або "types": ["core-js"]може бути використана для вирішення can't find Promise,Map, Set and Iterator. Однак використання обох помилок призведе до повторних помилок ідентифікатора.


1
Дякуємо за оновлення та хорошу відповідь. Я прийняв вашу відповідь, оскільки люди все ще приїжджають сюди, щоб усунути цю помилку досі. Чи є шанс ви оновити свою відповідь на RC 5? Я зіткнувся з цією помилкою, і, слідуючи вашої відповіді, я зміг використати обіцянку, але тепер у файлі node_modules \ @types \ es6-shim \ index.d.ts є багато помилок: "Копіювати ідентифікатор 'PropertyKey'." у рядках: 6,10,248,283,290 тощо; .. також помилка в: C: \ Користувачі \ armyTik \ Desktop \ rc5 \ store-app-02 \ node_modules \ typecript \ lib \ lib.es2015.core.d.ts: 17 : 13 Дублікат ідентифікатора "PropertyKey".
Став Алфі

Я оновив свою відповідь. Сподіваємось, це допоможе трохи вияснити речі. Це повинно бути однаковим і для RC5, і для RC4, я вважаю.
Кріс Голленбек

Я також змінив його, щоб відображати тільки core-js, так що, сподіваюся, це менш заплутано. core-js і es6 - обидва для декларацій типу es6. Я віддаю перевагу core-js, оскільки, здається, охоплює більше, ніж es6-shim.
Кріс Голленбек

Дякуємо за оновлення. Цього разу мені не пощастило Я оновив свої поточні помилки.
Став Алфі

2
Можливо, ліб - це краще рішення. github.com/angular/angular/blob/…
Олексій

75

У мене також є та сама проблема - "Обіцянка не знайдена" - коли код хоче створити об'єкт Promise.

Спробував якесь рішення, знайдене в stackoverflow, включаючи те, щоб вийняти System.config ({...}) для формування system.js і включити його до index.html.

Нарешті я вирішив проблему. Проблема полягає в тому, що в index.html включено es6-shim.min.js. Однак у tsconfig.json властивість "target" під "compilerOptions" має значення "es5". Після того, як я змінив його на "es6", помилка не зникла.


2
Це було питання і для мене. Хтось знає, чому це призведе до цієї помилки?
Нік Брейді

Виправлені також помилки, які я отримав в IntelliJ IDEA / WebStorm
bentolor

5
Але код js повинен бути переведений в es5, оскільки не всі браузери готові до es6. Хто-небудь отримав проблеми es6 у різних браузерах. Дякую!
bmnepali

працює для мене на angular2.1.0. компілятор 2.1.0 core 2.1.0 common2.1.0 rxjs5.0.0-beta.12 платформа-браузер2.1.0
farhad goodarzi

Дякую! Ви врятували мені багато часу
Крістіан Трайна

63

Кутовий 2 Фінал

- підтримка es5 (прекрасно працює з TS 2.0.0 +)

За оновлення es6-shimзараз не підтримується, якщо у вас обидва типінгу встановлені разом es6-shimі core-jsразом. Видаліть es6-shimвведення тексту, згадуючи в tsconfig.json. Тепер ви можете посилатися нижче, core-jsввівши es5підтримку всерединіmain.ts

///<reference path="./../typings/globals/core-js/index.d.ts"/>

tsconfig.json

exclude: [
   "node_modules", //<-- this would be needed in case of VS2015
   "node_modules/@typings",
   "typings"
]

- Підтримка es6

Вам просто потрібно встановити "target"властивість es6, тоді всі помилки зникнуть. І перекладений код буде у es6форматі.


Велике спасибі. Я не мав шансів знайти це самостійно.
Став Алфі

@StavAlfi np .. що трапляється .. Радий допомогти вам .. Дякую :)
Панкай Паркяр

З beta.7 він повинен бути встановлений, якщо ви використовуєте налаштування проекту у посібнику з швидкого запуску. Яку бета-версію Angular ви використовуєте? Я підтверджую порушення зміни з кутового 2.0.0 beta.7
Marc

1
Пакет.json у підручнику із швидким запуском підтримує фактичну версію кута 2. Якщо ви скопіюєте package.json. tscconfig.json та typings.json до кореневого режиму вашого проекту та зателефонуйте npm -установка проекту буде добре.
Марк

3
@PankajParkar 2.0.0-rc.1. Я почав використовувати Angular пару днів тому. Я працював, хоча розпочинали роботу з документами [тут] (). У package.jsonвони поклали "angular2-in-memory-web-api": "0.0.7"і решта кутового матеріалу походить від "@angular/<module>": "2.0.0-rc.1"де <module>знаходиться common, compiler, core, http, platform-browser, platform-browser-dynamic, router, router-deprecatedі upgrade.
Гектор

42

Оновлено станом на кутовий-2.0.0-rc.4

TLDR;

  1. Перекладіть на es6

    • помилка відпадає (з / деякі gotchas).
  2. Перекладіть на es5

    • встановити типізацію
    • встановити прошивку es6
    • переконайтеся, що він компілюється з вашим кодом.
    • помилка відходить.

Для читачів:

Варіант 1: Перекладіть на es6 або es2015

tsconfig.json:

{
  "compilerOptions": {
    "target": "es6",
    "module": "system",
    "moduleResolution": "node",
     ...
  },
"exclude": [
    "node_modules",
    "jspm_packages"
  ]
}

Майте на увазі, що uglifyjs наразі не підтримує es6 . Це може вплинути на створення виробничих пакетів.

Варіант 2: Перекладіть на es5, встановіть типізацію та встановіть es6-shim:

tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
     ...
  },
  "exclude": [
    "node_modules",
    "jspm_packages"
  ]
}

Встановіть типізацію, а потім встановіть es6-shim:

npm install typings --saveDev
typings install dt~es6-shim --global --save

Якщо ви підете цим маршрутом, вам потрібно переконатися, що компілятор машинопису може знайти файл .d.ts.

У вас є два варіанти:

а. Переконайтесь, що ваш tsconfig.json знаходиться на тому ж рівні, що і папка набору даних.

б. Додайте посилання у свій файл main.ts, де завантажується програма angular2.

Варіант A: Переконайтеся, що ваш tsconfig.json знаходиться на тому ж рівні, що і папка набору даних.

Примітка: НЕ використовуйте прапор виключення для виключення папки типізації.

project
|-- src
|-- node_modules
|-- package.json
|-- typings
|-- tsconfig.json

Варіант B: Посилання на основний файл перед завантажувальним файлом (Не робити цього):

Як показано в інших відповідях, цей файл більше не включається Angular

main.ts:

/// <reference path="../../typings/globals/es6-shim/index.d.ts" />

2
Варіант 1 прекрасно працює для RC4. Обов’язково видаліть core-js та інші типізації, які надають Promise, Map тощо, щоб уникнути конфліктів у просторі імен.
wtfzn

1
Дякую, 1 працював. Потрібен або core-js, або es6-shim (не обидва). А потім включіть ./typings/index.d.ts у свій процес компіляції ts.
k3a

1
--saveDevнаразі не працює. --save-devробить.
Георгій Совєтов

1
Не typingsслід встановлювати глобально?
Георгій Совєтов


8

Це те, що працювало для мене.

перевірити, чи існує typings.jsonфайл,

Це виглядає приблизно так,

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160317120654",
    "jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
    "node": "registry:dt/node#6.0.0+20160613154055"
  }
}

Встановіть пакет набору даних у всьому світі.

sudo npm install -g typings

встановивши типізацію , запустіть

typings install

потім перезавантажте сервер.


6

У мене була подібна проблема, коли він не розпізнавав метод Promise.resolve () . Я змінив значення "target" з ES5 на ES6 в tsconfig.json . Це вирішило проблему.

Сподіваюся, це допомагає.


Так, це мені точно допомогло - змінив значення "target" з ES5 на ES6 в tsconfig.json.
Грег Тревелік

5

Оскільки Angular 2 перейшов до RC 0, /angular2/typings/browser.d.ts більше не є частиною розподілу Angular 2. Файл можна встановити окремо.

Звідси: https://github.com/angular/angular/isissue/8513 є кілька варіантів. Той, хто працював на мене:

typings install es6-shim --ambient --save

// In your app.ts
/// <reference path="typings/browser.d.ts" />

1
Дякую за це, але команда для типінгу 1.0+ є: набору даних встановити dt ~ es6-shim --save --global ( github.com/typings/typings/isissue/517 ), а потім використовувати /// <посилання шлях = " типінг / es6-shim / es6-shim.d.ts "/>
Саймон Треуелла

4

Мені вдалося вирішити цю проблему без додавання будь - яких посилань потрійного слеша в ТС завантажувального файл, зміни в ES6 (який приносить купу питань, так само , як @DatBoi сказав) оновлення VS2015 - х NodeJSі / або в NPMкомплекті збірки або установки по typingsвсьому світу.

Ось що я зробив за кілька кроків:

  • додано typingsу package.jsonфайл проекту .
  • додав scriptблок у package.jsonфайл для виконання / оновлення typingsпісля кожної дії NPM.
  • додав typings.jsonфайл у кореневу папку проекту, що містить посилання на core-jsякий є одним із найкращих пакетів shim / polyfill на даний момент для вирішення проблем ES5 / ES6.

Ось як package.jsonповинен виглядати файл (лише відповідні рядки):

{
  "version": "1.0.0",
  "name": "YourProject",
  "private": true,
  "dependencies": {
    ...
    "typings": "^1.3.2",
    ...
  },
  "devDependencies": {
    ...
  },
  "scripts": {
      "postinstall": "typings install"
  }
}

І ось typings.jsonфайл:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160621231320"
  }
}

( Jasmineі Nodeне потрібні, але я пропоную зберігати їх у випадку, якщо вам знадобиться в майбутньому).

Це виправлення працює добре з Angular2 RC1 до RC4, що саме мені потрібно, але я думаю, що це також виправить подібні проблеми і з іншими бібліотечними пакетами, що підтримуються ES6.

AFAIK, я думаю, що це найчистіший можливий спосіб виправити це, не псуючи налаштування за замовчуванням VS2015.

Для отримання додаткової інформації та детального аналізу питання я також пропоную прочитати цю публікацію у своєму блозі.


3

Якщо ви використовуєте Angular2 RC1 з типізацією v1.0 +, використовуйте команду:

typings install dt~core-js --save --global

встановити визначення core-js, а потім посилатись на свій глобальний індекс у main.ts:

/// <reference path="../../../typings/index.d.ts" />

Якщо ви використовуєте es6-shim або якусь іншу бібліотеку shim, встановіть для цього типізацію

Зверніться до https://github.com/typings/typings/isissue/517


2

Я помітив ці проблеми, що з’явились після оновлення з кутового 5 до кутового 6. Я зміг виправити це, виконавши наступне в VS2017:

  • Переконайтесь, що TypeScript SDK встановлений (через інсталятор Visual Studio) для моєї конкретної версії TypeScript, 2.9
  • Переконайтесь, що властивість проекту Module System встановлена ​​таким чином, що відповідає моєму tsconfig.json: ES2015. Це часто автоматично синхронізується, якщо файл tsconfig знаходиться в корені проекту. Однак, оскільки я використовував кутовий шаблон VS, він розміщує ці файли у підпапці «ClientApp», а властивість проекту Module System не була встановлена.

Властивості проекту VS2017

tsconfig.json:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "lib": [
      "es2017",
      "dom"
    ],
    "module": "es2015",
    "baseUrl": "./"
  }
}

1

У мене була така ж проблема, коли створювали об’єкт обіцянки всередині свого класу. Змінивши цільове ім'я на "es5" з "es6" вирішив мою проблему.


1

Ще одне можливе рішення - перевстановити типізацію:
це працює для мене"angular2": "2.0.0-beta.15"

  1. npm clean cache
  2. npm install
  3. npm install -g typings
  4. Видалити typingsкаталог з проекту (каталог, де встановлені модулі типізації)
  5. typings install
  6. npm run

1

Ще одне хороше рішення. Вам потрібно створити файл typings.json у кореневому каталозі проекту із вмістом:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160725163759",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160909174046"
  }
}

Потім встановіть глобальний або локальний пакет типізації, якщо він не встановлений (я встановлюю його глобальний):

sudo npm install --global typings

У команді запуску кореневого каталогу проекту:

typings install

Після цього проблема вирішується. Не потрібно для зміни цілі tsconfig на es6 або es7. Після цього ваша веб-програма не підтримує стару версію браузерів.


1

Якщо ви прийшли сюди, тому що ви бачите ці помилки у Visual Studio 2017, то у вас є інша проблема, як описано вище, якщо вам вдасться скласти. Це відбувається тому, що мовна служба не вибирає ваш tsconfig.json.

https://developercommunity.visualstudio.com/content/problem/208941/vs-156-ignores-tsconfigjson-and-typescriptcompileb.html

Ви повинні встановити Дію збірки вашого tsconfig.json на "Вміст" (Клацніть правою кнопкою миші -> Властивості), тоді VS підбере її.


0

Я знайшов посилання в boot.ts не був правильним шляхом. Оновлення цього шляху, щоб /// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />вирішити помилки Обіцяти.


0

Я тренуюсь з підручником angular2 (герой).
Після встановлення @ type / core-js прокоментував відповіді у тезах, я отримав помилку "Копіюючий ідентифікатор".
У моєму випадку це було вирішено як видалення лінії lib в tsconfig.json.

// "lib": ["es2015", "dom"]


-1

моя файлова структура наведена нижче:

project
 |--node-modules
 |   |--angular2
 |   |   |--typings
 |   |   |   |--browser.d.ts
 |--src
 |--app.ts

вставте знизу у верхню частину програми app.ts і вирішіть вашу проблему

/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />

Змінення запису TARGET на вказівку на ES6 у tsconfig.json вирішило для мене це питання, як зазначено в деяких відповідях вище.
TheCopyPaster

-1

Я отримав той самий випуск і міг його знайти в github https://github.com/angular/angular-cli/isissue/1901 , де зазначено, що це проблема typescript@2.0.2.

Зменшення машинопису 2.0.0як на глобальному, так і на локальному рівні допомогло мені вирішити цю проблему.

В усьому світі:

npm uninstall typescript -g
npm cache clean
npm install typescript@2.0.0 -g

Місцево: перейдіть у папку проекту, яку ви створили ng new

npm uninstall typescript
npm cache clean
npm install typescript@2.0.0

Я також змінив версію typecript в package.json з ^2.0.0на 2.0.0, але вона не працювала, поки не знижу локальну установку typecript.


Чому люди спростовують це, я хотів би знати, чому це погана ідея. Якщо машинопис є перекладеною мовою і перетворений на javascript, він є настільки ж безпечним, як і ваш браузер, тому він не схожий на ризик, правда?
user3505901
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.