Я использую Angular (версия 2) с TypeScript (версия 1.6), и когда я компилирую код, я получаю следующие ошибки:
Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/change_detection/parser/locals.d.ts(4,42): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(1,25): Error TS2304: Cannot find name 'MapConstructor'.
node_modules/angular2/src/core/facade/collection.d.ts(2,25): Error TS2304: Cannot find name 'SetConstructor'.
node_modules/angular2/src/core/facade/collection.d.ts(4,27): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(4,39): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(7,9): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(8,30): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(11,43): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(12,27): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(14,23): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(15,25): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(94,41): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/collection.d.ts(95,22): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/collection.d.ts(96,25): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/lang.d.ts(1,22): Error TS2304: Cannot find name 'BrowserNodeGlobal'.
node_modules/angular2/src/core/facade/lang.d.ts(33,59): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/promise.d.ts(1,10): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(3,14): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(8,32): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(9,38): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(10,35): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(10,93): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(11,34): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(12,32): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(12,149): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(13,43): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/linker/element_injector.d.ts(72,32): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(74,17): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(78,184): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(83,182): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(107,37): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/proto_view_factory.d.ts(27,146): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(52,144): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(76,79): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(77,73): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(94,31): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(97,18): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(100,24): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(103,142): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(104,160): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/render/api.d.ts(281,74): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/zone/ng_zone.d.ts(1,37): Error TS2304: Cannot find name 'Zone'.
Это код:
import 'reflect-metadata';
import {bootstrap, Component, CORE_DIRECTIVES, FORM_DIRECTIVES} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<input type="text" [(ng-model)]="title" /><h1>{{title}}</h1>',
directives: [ CORE_DIRECTIVES ]
})
class AppComponent {
title :string;
constructor() {
this.title = 'hello angular 2';
}
}
bootstrap(AppComponent);
angular
typescript
user233232
источник
источник
import {ROUTER_PROVIDERS} from 'angular2/router';
я получаю ту же проблему, и по какой-то причине это исправляет для меня ...?!?Ответы:
Известная проблема: https://github.com/angular/angular/issues/4902
Основная причина:
.d.ts
файл, неявно включаемый в TypeScript, варьируется в зависимости от цели компиляции, поэтому при таргетинге необходимо иметь больше объединенных объявлений,es5
даже если что-то действительно присутствует во время выполнения (например, chrome). Ещеlib.d.ts
источник
В журнале изменений для 2.0.0-бета.6 (2016-02-11) упоминается обходной путь (указанный в разделе критических изменений):
убедитесь, что у вас есть правильный путь ссылки, мне нужно было добавить ../ к началу, чтобы это заработало .
источник
TS2304: Cannot find name 'module'
иTS2339: Property 'find' does not exist on type 'MyThing[]'.
... Есть идеи?Функции ES6, такие как обещания, не определяются при нацеливании на ES5. Есть и другие библиотеки, но core-js - это библиотека javascript, которую использует команда Angular. Содержит полифилы для ES6.
Angular 2 сильно изменился с тех пор, как был задан этот вопрос. Объявления типов гораздо проще использовать в Typescript 2.0.
Для функций ES6 в Angular 2 вам не нужно печатать. Просто используйте typcript 2.0 или выше и установите @ types / core-js с npm:
Затем добавьте атрибуты TypeRoots и Types в ваш файл tsconfig.json:
Это гораздо проще, чем использовать Typings, как объяснено в других ответах. См. Сообщение в блоге Microsoft для получения дополнительной информации: Машинопись: будущее файлов декларации
источник
typeRoots
если единственная запись у вас естьnode_modules/@types
.TypeRoots
иTypes
к tsconfig.json. В моем случае мне также пришлось обновить мой плагин Gulp gpes-typescript 2.x, который распространялся с использованием и встроенной версии TypeScript 1, но как только я обновился, я использовал TypeScript 2 и добавил полифилл @ types / core-js, который был устанавливать. Большое спасибо.Для тех, кто следует учебнику по Angular2
angular.io
просто для того, чтобы быть явным, вот расширение ответа mvdluit о том, где именно разместить код:Вы
main.ts
должны выглядеть так:Обратите внимание, что вы оставляете в
///
слешах, не удаляйте их.ссылка: https://github.com/ericmdantas/angular2-typescript-todo/blob/master/index.ts#L1
источник
_references.js
нее, она не будет работать. Должен быть внутри компонента, как предполагает этот ответ. Кроме того, используйте../../
вместо../
пути.browser.d.ts
папке для ввода текстов больше нет. Просто.js
файлы подdist
. Есть файл с именем,typings.d.ts
так что я подумал, что это новый, но это не решило проблему. Сборка для 'es6' работает, но IE жалуется. Так что застрял в сборке 'es5' и не печатал! : /npm install -g typings typings install
.d.ts
из пакета typings. Также, чтобы соответствовать требованиям IE9 +, пришлось собирать для es3.Я смог исправить это с помощью следующей команды
Обратите внимание, что вам нужно
typings
заставить работать вышеуказанную команду, если у вас ее нет, выполните следующую команду, чтобы установить ееОБНОВИТЬ
обновление типов не читает,
--ambient
это стало--global
также для некоторых людей, вам нужно установить определения вышеупомянутых библиотек, просто используйте следующую командуСпасибо @bgerth за указание на это.
источник
typings install dt~es6-promise dt~es6-collections --global --save
typings
обновления, я добавлю ваше решение к ответуПри наличии Typescript> = 2 опция «lib» в tsconfig.json сделает эту работу. Нет необходимости печатать. https://www.typescriptlang.org/docs/handbook/compiler-options.html
источник
Для
Angular 2.0.0-rc.0
добавленияnode_modules/angular2/typings/browser.d.ts
не будет работать. Сначала добавьте файл typings.json в ваше решение со следующим содержимым:И затем обновите
package.json
файл, чтобы включить этоpostinstall
:Теперь беги
npm install
Также теперь вы должны игнорировать
typings
папку в вашемtsconfig.json
файле:Обновить
Теперь используется AngularJS 2.0
core-js
вместоes6-shim
. Следуйте его быстрому старту typings.json файл для получения дополнительной информации.источник
rc0
github.com/angular/angular/issues/4902#issuecomment-216495769Вы можете добавить код в начале файла .ts.
источник
Я получал это на Angular 2 RC1. Оказывается, некоторые имена изменились с наборами v1 против старого 0.x. Эти
browser.d.ts
файлы сталиindex.d.ts
.После запуска
typings install
найдите ваш файл запуска (где вы загружаете) и добавьте:/// <reference path="../typings/index.d.ts" />
(или без../
если ваш файл запуска находится в той же папке, что и папка с наборами)Добавление
index.d.ts
в список файлов вtsconfig.json
по какой-то причине не сработало.Также
es6-shim
посылка была не нужна.источник
Я смог это исправить, установив
typings
модуль.(С использованием ng 2.0.0-rc.1)
источник
У меня была та же проблема, и я решил ее с помощью
lib
опции вtsconfig.json
. Как сказал Басарат в своем ответе ,.d.ts
файл неявно включается в TypeScript в зависимости от параметра компиляции,target
но это поведение можно изменить с помощьюlib
параметра.Вы можете указать дополнительные файлы определений для включения без изменения целевой версии JS. Для примеров это часть моего текущего
compilerOptions
для Typescript@2.1, и он добавляет поддержкуes2015
функций, не устанавливая ничего другого:Полный список доступных опций смотрите в официальном документе. .
Обратите внимание, что я добавил
"types": ["node"]
и установилnpm install @types/node
поддержкуrequire('some-module')
в своем коде.источник
и добавьте правильный путь к index.d.ts
Пробовал на @ angular-2.0.0-rc3
источник
Если это по-
npm install -g typings typings install
прежнему не помогает, удалите node_modules и папки для ввода текста перед выполнением этой команды.источник
Это то, что вы думаете, как каждый пытается сделать что-то другое. Я считаю, что эти системы еще далеки от окончательной версии.
В моем случае я обновил с rc.0 до rc.5 появилась эта ошибка.
Мое исправление было изменить tsconfig.json.
источник
"lib"
, нет"target"
.добавьте typing.d.ts в основную папку приложения и там объявите переменную, которую вы хотите использовать каждый раз
после объявления этого в typing.d.ts ошибкатребовать в приложении не будет ..
источник
Я новичок в Angular, но для меня решение было найдено, просто импортировав Input. Не могу взять кредит на это, нашел его на другой доске. Это простое решение, если у вас возникла та же проблема, но если ваши проблемы более сложные, я прочел материал выше.
Мукеш :
источник
Я нашел этот очень полезный документ на сайте Angular 2. Это, наконец, позволило мне заставить все работать должным образом, в то время как другие ответы здесь, чтобы установить наборы, подвели меня с различными ошибками. (Но помог привести меня в правильном направлении.)
Вместо того, чтобы включать es6-обещание и es6-коллекции, он включает core-js, что помогло мне ... не противоречит основным определениям Angular2. Кроме того, в документе объясняется, как настроить все это так, чтобы оно происходило автоматически при установке NPM, и как изменить файл typings.json.
источник
Angular 2 RC1 переименовал
node_modules/angular2
каталог вnode_modules/angular
.Если вы используете gulpfile для копирования файлов в выходной каталог, у вас, вероятно, все еще есть
node_modules/angular
сидите, что может быть захвачено компилятором и запутать себя до чертиков.Поэтому (осторожно) удалите все, что у вас есть
node_modules
для бета-версий, а также удалите все старые наборы и повторите попыткуtypings install
.источник
Хороший звонок, @VahidN, я нашел, что мне нужно
По моему
tsconfig
тоже, чтобы остановить ошибки отes6-shim
себяисточник
Импортируйте приведенный ниже оператор в ваш файл JS.
источник
import './rxjs-extensions';
в мойapp.component.ts
файл rxjs-extensions из учебника angular2 (включая предложенную строку), и, похоже, эти ошибки были устранены.Принятый ответ не обеспечивает жизнеспособного исправления, а большинство других предлагает обходной путь «тройной косой черты», который больше не является жизнеспособным, так как
browser.d.ts
он был удален последними RC Angular2 и, таким образом, больше не доступен.Я настоятельно рекомендую установить
typings
модуль, как предложено здесь несколькими решениями, но нет необходимости делать это вручную или глобально - есть эффективный способ сделать это только для вашего проекта и в интерфейсе VS2015. Вот что вам нужно сделать:typings
в файл package.json проекта.script
блок вpackage.json
файл для выполнения / обновленияtypings
после каждого действия NPM.typings.json
в корневую папку проекта файл, содержащий ссылкуcore-js
(в целом лучше, чемes6-shim
atm).Вот и все.
Вы также можете посмотреть эту другую SO-ветку и / или прочитать эту запись в моем блоге для получения дополнительной информации.
источник
Я получал эту ошибку после слияния моей ветки разработчика с моей текущей веткой. Я потратил некоторое время, чтобы решить проблему. Как вы можете видеть на изображении ниже, в кодах вообще нет проблем.
Таким образом, единственное исправление сработало для меня, что перезапуск VSCode
источник
Теперь вы должны импортировать их вручную.
источник
Обновить
tsconfig.json
, изменитьв
источник