После установки угловых, компилятор 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'.
javascript
angular
typescript
Став Альфи
источник
источник
Ответы:
Angular 5 с Typescript ^ 2.0.0
Это также должно работать с более ранними версиями Angular 2+.
Чтобы заставить это работать с машинописным шрифтом 2.0.0, я сделал следующее.
npm install --save-dev @types/core-js
tsconfig.json
Подробнее о @types с машинописью 2.0.0.
Пример установки:
Дубликат ошибки идентификатора
Скорее всего, это связано с тем, что повторяющиеся печатные символы ecmascript 6 уже импортируются откуда-то еще, скорее всего, из старой es6-shim.
Дважды проверьте,
typings.d.ts
чтобы не было ссылок наes6
. Удалите любую ссылку наes6
из вашего каталога печатных изданий, если у вас есть.Например:
Это будет конфликтовать с
types:['core-js']
typings.json.Включение
core-js
в массив типовtsconfig.json
должно быть единственным местом, из которого он импортируется.Угловой CLI 1.0.0-бета.30
Если вы используете Angular-CLI, удалите массив lib в
typings.json
. Это, кажется, противоречит объявлению core-js в типах.Webstorm / Intellij Пользователи, использующие Angular CLI
Убедитесь, что встроенный компилятор машинописи отключен. Это будет конфликтовать с CLI. Для компиляции вашей машинописи с помощью CLI вы можете настроить
ng serve
конфигурацию.Tsconfig compilerOptions lib против типов
Если вы предпочитаете не устанавливать базовые определения типов js, есть несколько библиотек es6, которые включены в набор машин. Они используются через
lib: []
свойство в tsconfig.Смотрите здесь, например: https://www.typescriptlang.org/docs/handbook/compiler-options.html
ТЛ; др
Короткий ответ либо
"lib": [ "es6", "dom" ]
или"types": ["core-js"]
может быть использован для решенияcan't find Promise,Map, Set and Iterator
. Однако использование обоих приведет к ошибкам дубликатов идентификаторов.источник
У меня также есть та же проблема - «Обещание не найдено» - когда код хочет создать объект Promise.
Попробовал какое-то решение, найденное для stackoverflow, в том числе решение для извлечения System.config ({...}) для формирования system.js и включения его в index.html.
Наконец я решил проблему. Проблема в том, что в index.html включен es6-shim.min.js. Тем не менее, в tsconfig.json свойство "target" в "compilerOptions" имеет значение "es5". После того, как я изменил его на "es6", ошибка исчезла.
источник
Angular 2 Final
- поддержка es5 (отлично работает с TS 2.0.0 +)
Каждое обновление
es6-shim
теперь не поддерживается, если у вас установлены оба набора вместеes6-shim
иcore-js
вместе. Удалитеes6-shim
печатание, упомянув в tsconfig.json. Теперь вы можете ссылаться ниже,core-js
набрав дляes5
поддержки внутриmain.ts
tsconfig.json
- поддержка es6
Вам просто нужно установить
"target"
свойствоes6
, тогда все ошибки исчезнут. И переданный код будет вes6
формате.источник
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
.Обновление от angular-2.0.0-rc.4
TLDR;
Переносить на es6
Перевести на es5
Для читателей:
Вариант 1: перенос на es6 или es2015
tsconfig.json:
Имейте в виду, что uglifyjs не поддерживает es6 на данный момент . Это может повлиять на создание производственных пакетов.
Вариант 2. Перейдите на es5, установите набор текста, а затем установите es6-shim:
tsconfig.json:
Установите набор текста, затем установите es6-shim:
Если вы идете по этому пути, вам нужно убедиться, что компилятор машинописного текста может найти файл .d.ts.
У вас есть два варианта:
а. Убедитесь, что ваш файл tsconfig.json находится на том же уровне, что и папка для набора текста.
б. Включите ссылку в ваш файл main.ts, где ваше приложение angular2 загружается.
Вариант A: убедитесь, что ваш файл tsconfig.json находится на том же уровне, что и папка для набора текста.
Примечание: НЕ используйте флаг исключения, чтобы исключить папку для ввода.
Вариант Б: ссылка в основной файл перед загрузкой (не делайте этого):
Как показано в других ответах, этот файл больше не включен Angular
main.ts:
источник
--saveDev
не работает на данный момент.--save-dev
делает.typings
быть установлен глобально?При наличии Typescript> = 2 опция «lib» в tsconfig.json сделает эту работу. Нет необходимости печатать. https://www.typescriptlang.org/docs/handbook/compiler-options.html
источник
Это то, что сработало для меня.
проверьте, существует ли
typings.json
файл,Установить набор текста глобально.
после установки типизации , запустите
затем перезапустите сервер.
источник
У меня была похожая проблема, когда он не распознавал метод Promise.resolve () . Я изменил «целевое» значение с ES5 на ES6 в tsconfig.json . Это решило проблему.
Надеюсь это поможет.
источник
Поскольку Angular 2 перешел на RC 0, /angular2/typings/browser.d.ts больше не является частью дистрибутива Angular 2. Файл может быть установлен отдельно.
Отсюда: https://github.com/angular/angular/issues/8513 есть несколько вариантов. Тот, который работал для меня, был:
источник
Мне удалось решить эту проблему, не добавляя ссылку на тройную косую черту в файл начальной загрузки TS, изменив ES6 (что вызывает кучу проблем, как сказал @DatBoi ), обновить VS2015
NodeJS
и / илиNPM
связанные сборки или установитьtypings
глобально.Вот что я сделал в несколько шагов:
typings
вpackage.json
файл проекта .script
блок вpackage.json
файл для выполнения / обновленияtypings
после каждого действия NPM.typings.json
файл в корневую папку проекта со ссылкой наcore-js
один из лучших пакетов shim / polyfill на данный момент для решения проблем ES5 / ES6.Вот как
package.json
должен выглядеть файл (только соответствующие строки):И вот
typings.json
файл:(
Jasmine
иNode
не обязательны, но я предлагаю сохранить их на случай, если это понадобится в будущем).Это исправление отлично работает с Angular2 RC1 до RC4, что мне и было нужно, но я думаю, что оно также исправит аналогичные проблемы и с другими пакетами библиотек с поддержкой ES6.
AFAIK, я думаю, что это самый чистый способ исправить это, не испортив настройки VS2015 по умолчанию.
Для получения дополнительной информации и подробного анализа проблемы, я также предлагаю прочитать этот пост в моем блоге.
источник
Если используется Angular2 RC1 с типами v1.0 +, используйте команду:
чтобы установить определение core-js, а затем сослаться на ваш глобальный индекс в файле main.ts:
Если вы используете es6-shim или какую-либо другую библиотеку shim, установите вместо этого типизацию
См. Https://github.com/typings/typings/issues/517.
источник
Я заметил, что эти проблемы появляются после обновления с Angular 5 до Angular 6. Я смог это исправить, выполнив в VS2017 следующее:
tsconfig.json:
источник
У меня была такая же проблема при создании объекта обещания внутри моего класса. Сменив имя цели на «es5» с «es6», я решил мою проблему.
источник
Другое возможное решение - переустановить наборы:
это работает для меня
"angular2": "2.0.0-beta.15"
npm clean cache
npm install
npm install -g typings
typings
каталог из проекта (установлены модули ввода в каталог)typings install
npm run
источник
Еще одно хорошее решение. Вам нужно создать файл typings.json в корневом каталоге проекта с содержимым:
Затем установите пакет глобальных или локальных типизаций, если он не установлен (я устанавливаю его глобально):
В корневом каталоге проекта выполните команду:
После этого проблема решена. Нет необходимости менять цель tsconfig на es6 или es7. Ваше веб-приложение после этого не поддерживает некоторые старые версии браузеров.
источник
Если вы пришли сюда, потому что вы видите эти ошибки в Visual Studio 2017, то у вас возникнет другая проблема, как описано выше, если вам удастся скомпилировать. Это связано с тем, что языковая служба не выбирает ваш файл tsconfig.json.
https://developercommunity.visualstudio.com/content/problem/208941/vs-156-ignores-tsconfigjson-and-typescriptcompileb.html
Вы должны установить действие сборки вашего tsconfig.json в «Содержимое» (щелкните правой кнопкой мыши -> Свойства), тогда VS подхватит его.
источник
Я обнаружил, что ссылка в boot.ts неверна. Обновление этого пути для
/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />
устранения ошибок Обещания.источник
Я тренируюсь с учебником angular2 (герой).
После установки @ types / core-js, прокомментированных в ответах на эти вопросы, я получил ошибку «Duplicate identifier».
В моем случае это было решено как удаление строки lib в tsconfig.json.
источник
моя файловая структура выглядит так:
вставьте ниже в верхней части вашего app.ts и ваша проблема решена
источник
У меня возникла та же проблема, и я смог найти ее в github https://github.com/angular/angular-cli/issues/1901 , где указано , что это проблема
typescript@2.0.2
.Понижение машинописного текста до
2.0.0
глобально и локально помогло мне решить его.Во всем мире:
Локально: перейдите в папку проекта, которую вы создали ng new
Я также изменил версию машинописного текста в package.json с
^2.0.0
на2.0.0
, но он не работал, пока я не понизил локальную установку машинописного текста.источник