Angular và Typecript: Không thể tìm thấy tên


221

Tôi đang sử dụng Angular (phiên bản 2) với TypeScript (phiên bản 1.6) và khi tôi biên dịch mã, tôi gặp các lỗi sau:

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'.

Đây là mã:

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);

có vẻ như có một vấn đề ở đây github.com/angular/angular/issues/4902
cướp

Hãy thử thêm lần nhập sau import {ROUTER_PROVIDERS} from 'angular2/router';Tôi đang gặp vấn đề tương tự và vì một số lý do, việc này khắc phục nó cho tôi ...?!?
cướp

Câu trả lời:


52

Một vấn đề đã biết: https://github.com/angular/angular/issues/4902

Lý do cốt lõi: .d.tstệp được bao gồm bởi TypeScript thay đổi theo mục tiêu biên dịch, do đó, người ta cần phải có các khai báo xung quanh hơn khi nhắm mục tiêu es5ngay cả khi mọi thứ thực sự có trong thời gian chạy (ví dụ: chrome). Thêm vềlib.d.ts


446
vậy giải pháp là gì?
user233232

3
2.0.0-alpha.45 là tốt, sử dụng các kiểu chữ từ node_modules / angular2 / bundles / typings / ** / *. D.ts
Là Butuv

2
"angular2": "2.0.0-beta.3" hoạt động, nhưng beta.4 và beta.5 dường như lại gặp vấn đề này, ít nhất là khi định cấu hình dự án của bạn như trong hướng dẫn
CorayThan 11/2/2016

3
@Roj Tôi vẫn thấy điều này trong phiên bản beta 6 nhưng nó hoạt động khi sử dụng tham chiếu đến browser.d.ts
inki

3
hoan hô! RC1 đã tham gia này.
RoninCoder

105

Có một cách giải quyết được đề cập trong thay đổi cho 2.0.0-beta.6 (2016-02-11) (được liệt kê dưới các thay đổi vi phạm):

Nếu bạn sử dụng --target = es5, bạn sẽ cần thêm một dòng ở đâu đó trong ứng dụng của mình (ví dụ: ở đầu tệp .ts nơi bạn gọi bootstrap):

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

(Lưu ý rằng nếu tệp của bạn không nằm trong cùng thư mục với node_modules, bạn sẽ cần thêm một hoặc nhiều ../ vào đầu đường dẫn đó.)

hãy chắc chắn rằng bạn có đường dẫn tham chiếu chính xác, tôi cần thêm ../ vào đầu để bắt đầu hoạt động.


3
Điều này đã sửa rất nhiều lỗi cho tôi, nhưng tôi vẫn gặp lỗi như TS2304: Cannot find name 'module'TS2339: Property 'find' does not exist on type 'MyThing[]'.... Có ý kiến ​​gì không?
mwijnands

1
Điều gì nếu bạn sử dụng góc trong một gói có nghĩa là để tái sử dụng? Bất kỳ ứng dụng nào tôi cố gắng sử dụng một gói với một tệp có tham chiếu này đều phàn nàn tại thời điểm xây dựng tsc rằng nó không thể tìm thấy tài liệu tham khảo này.
Hans

5
Có một giải pháp cho các cấu trúc gói mới trong góc, tôi không thể tìm thấy một browser.d.ts trong cơ cấu @angular mới / ....
I.devries

2
@ I.devries Đúng, họ đã xóa browser.d.ts. Các tệp hiện là index.d.ts và bạn cần một tệp cho mỗi thành phần góc, vì mỗi tệp hiện được cài đặt riêng trong RC.0 trở lên. Bạn cũng cần cài đặt "typings" - xem câu trả lời của Khaled Al-Ansari và theUtherSide ở trên.
Vern Jensen

1
Tôi đã giải quyết nó bằng cách thêm: /// <Reference path = "../ typings / index.d.ts" />
Sako73

80

Các tính năng ES6 như lời hứa không được xác định khi nhắm mục tiêu ES5. Có những thư viện khác, nhưng core-js là thư viện javascript mà nhóm Angular sử dụng. Nó chứa polyfill cho ES6.

Angular 2 đã thay đổi rất nhiều kể từ khi câu hỏi này được hỏi. Khai báo kiểu dễ sử dụng hơn nhiều trong Typecript 2.0.

npm install -g typescript

Đối với các tính năng ES6 trong Angular 2, bạn không cần phải đánh máy. Chỉ cần sử dụng typecript 2.0 trở lên và cài đặt @ type / core-js với npm:

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

Sau đó, thêm TypeRootsType thuộc tính vào tsconfig.json của bạn:

{
  "compilerOptions": {
    "target": "es5",
    "module": "es6",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "typeRoots": [
      "../node_modules/@types"
    ],
    "types" : [
      "core-js"
    ]
  },
  "exclude": [
    "node_modules"
  ]
}

Điều này dễ dàng hơn nhiều so với việc sử dụng typings, như được giải thích trong các câu trả lời khác. Xem bài đăng trên blog của Microsoft để biết thêm thông tin : Bản thảo: Tương lai của các tệp khai báo


1
Tôi nghĩ mảng "kiểu" cũng thuộc về Đối tượng "trình biên dịch". Nhưng khác với điều đó, cảm ơn rất nhiều, tôi đã vật lộn với chuyện này cả ngày.
đám rối

@plexus Cảm ơn! Bạn nói đúng về trình biên dịch. Tôi đã sửa câu trả lời.
David Rinck

Cảm ơn vì bài đăng tuyệt vời, nhưng theo URL bạn cung cấp, thậm chí không cần thiết phải tăng tsconfig.json, dù sao nó cũng thực sự hoạt động :) Ít nhất là nó đã làm cho tôi. Vì vậy, điều duy nhất bạn cần làm là cài đặt gói yêu cầu
Ilya Chernomordik

Bạn thậm chí có thể loại bỏ typeRootsnếu mục duy nhất bạn có node_modules/@types.
Morgan Todarey Quilling

Giống như một lá bùa. Như @ ilya-chernomordik đã đề cập, điều này cũng hoạt động với tôi mà không cần thêm TypeRootsTypesvào tsconfig.json. Trong trường hợp của tôi, tôi cũng phải cập nhật plugin Gulp gulp-typecript 2.x của mình, phiên bản được sử dụng và phiên bản nhúng của TypeScript 1, nhưng một khi tôi đã cập nhật nên tôi đang sử dụng TypeScript 2 và thêm vào đó là @ type / core-js polyfill bộ. Cảm ơn nhiều.
rscarter

49

Đối với những người theo hướng dẫn Angular2 trên angular.io chỉ để được rõ ràng, đây là một bản mở rộng câu trả lời của mvdluit về chính xác nơi đặt mã:

Bạn main.tssẽ trông như thế này:

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

import {bootstrap} from 'angular2/platform/browser'
import {AppComponent} from './app.component'
// Add all operators to Observable
import 'rxjs/Rx'

bootstrap(AppComponent);

Lưu ý rằng bạn để lại trong ///dấu gạch chéo về phía trước, không loại bỏ chúng.

ref: https://github.com/ericmdantas/angular2-typescript-todo/blob/master/index.ts#L1


Tôi sử dụng VS2015 MVC6 và Angular2 beta.14, Nếu bạn đặt dòng tham chiếu trong _references.jsđó sẽ không hoạt động. Phải ở bên trong thành phần như câu trả lời này cho thấy. Ngoài ra, sử dụng ../../thay vì ../cho đường dẫn.
RoninCoder

@Hani bạn đã tìm được cách nào chưa? Tôi sẽ thử nâng cấp lên RC1 và dùng thử
Rots

Vì vậy, các đánh máy đã biến mất. Tôi đoán bạn sẽ cần phải cài đặt riêng và khi tôi làm, tôi cũng nhận được rất nhiều gói vô dụng. Nhưng dù sao, ngay cả sau khi làm tất cả những điều đó, không còn browser.d.tsthư mục đánh máy nữa. Chỉ cần .jstập tin dưới dist. Có một tập tin được đặt tên typings.d.tsvì vậy tôi nghĩ đó là tập tin mới, nhưng nó không giải quyết được vấn đề. Xây dựng cho 'es6' hoạt động, nhưng IE phàn nàn. Vì vậy, bị mắc kẹt với bản dựng 'es5' và không có đánh máy! : /
RoninCoder

@Hani Có câu trả lời mới. Có lẽ nó sẽ làm việc? npm install -g typings typings install
Rots

Hạ cấp xuống beta.15 và được sử dụng tương tự .d.tstừ gói typings. Ngoài ra để đáp ứng yêu cầu IE9 +, đã phải xây dựng cho es3.
RoninCoder

48

Tôi đã có thể sửa lỗi này bằng lệnh sau

typings install es6-promise es6-collections --ambient

Lưu ý rằng bạn cần typingslàm cho lệnh trên hoạt động, nếu bạn không có lệnh này hãy chạy lệnh sau để cài đặt nó

npm install -g typings

CẬP NHẬT

Bản cập nhật typings không đọc --ambient--globalcũng trở thành một số người bạn cần cài đặt các định nghĩa của các thư viện trên, chỉ cần sử dụng lệnh sau

typings install dt~es6-promise dt~es6-collections --global --save

Cảm ơn @bgerth đã chỉ ra điều này.


9
Đối với tôi đó làtypings install dt~es6-promise dt~es6-collections --global --save
bgerth

1
@bgerth Tôi đoán nó đã thay đổi vì typingsbản cập nhật, tôi sẽ thêm giải pháp của bạn vào câu trả lời
Khaled Al-Ansari

typings cài đặt dt ~ es6-hứa dt ~ es6-bộ sưu tập --global --save làm việc cho tôi. Vấn đề này đang tái diễn và không liên tục ... thx cho sửa chữa này cho phép hy vọng nó hoạt động lâu hơn một ngày.
Sam

typings cài đặt dt ~ es6-hứa dt ~ es6-bộ sưu tập --global --save cũng làm việc cho tôi
Rikku121

33

Khi có Typecript> = 2, tùy chọn "lib" trong tsconfig.json sẽ thực hiện công việc. Không cần đánh máy. https://www.typescriptlang.org/docs/handbook/compiler-options.html

{
    "compilerOptions": {
        "target": "es5",
        "lib": ["es2016", "dom"] //or es6 instead of es2016(es7)
    }
}

Yup ... thêm "lib": ["es2016", "dom"] vào tệp tsconfig.json của tôi đã sửa nó
Marvel Moe

Chính xác. Chỉ cần thận trọng vì một số loại được tuyên bố trong đó có thể không có mặt.
Aluan Haddad

@Niels Steenbeek có nó chính xác ở đây. Tôi đã gặp những lỗi tương tự khi làm bài tập cho các khóa học Angular 2 & 4. Tuy nhiên, nội dung lib của tôi hơi khác một chút: "lib": ["es2015", "es2015.iterable", "dom"]
BoiseBakes

15

Để Angular 2.0.0-rc.0thêm node_modules/angular2/typings/browser.d.tssẽ không làm việc. Trước tiên hãy thêm tệp typings.json vào giải pháp của bạn, với nội dung này:

{
    "ambientDependencies": {
        "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#7de6c3dd94feaeb21f20054b9f30d5dabc5efabd"
    }
}

Và sau đó cập nhật package.jsontệp để bao gồm điều này postinstall:

"scripts": {
    "postinstall": "typings install"
},

Bây giờ chạy npm install

Ngoài ra, bây giờ bạn cũng nên bỏ qua typingsthư mục trong tsconfig.jsontệp của mình :

 "exclude": [
        "node_modules",
        "typings/main",
        "typings/main.d.ts"
    ]

Cập nhật

Bây giờ AngularJS 2.0 đang sử dụng core-jsthay vì es6-shim. Theo dõi tệp typings.json bắt đầu nhanh của nó để biết thêm thông tin.


Có một vấn đề với lỗi này trong rc0 github.com/angular/angular/issues/4902#issuecomment-216495769
ssuperczynski

15

bạn có thể thêm mã vào đầu tập tin .ts.

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

Điều này làm việc cho tôi. Không cần phải cài đặt typings trên toàn cầu. Đã thử trên góc ổn định 2.
Gopinath Shiva

Tôi cũng làm việc cho tôi, sử dụng Angular 2.0.0 (phát hành)
JoshuaDavid

10

Tôi đã nhận được điều này trên Angular 2 rc1. Hóa ra một số tên đã thay đổi với kiểu chữ v1 so với 0.x cũ. Các browser.d.tstập tin đã trở thành index.d.ts.

Sau khi chạy typings installxác định vị trí tệp khởi động của bạn (nơi bạn bootstrap) và thêm:

/// <reference path="../typings/index.d.ts" />(hoặc không có ../nếu tệp khởi động của bạn nằm trong cùng thư mục với thư mục đánh máy)

Thêm index.d.tsvào danh sách tập tin tsconfig.jsonkhông hoạt động vì một số lý do.

Ngoài ra, es6-shimgói không cần thiết.


7

Tôi đã có thể khắc phục điều này bằng cách cài đặt typingsmô-đun.

npm install -g typings
typings install

(Sử dụng ng 2.0.0-rc.1)


1
"'typyings.json' bị thiếu. - (Không phụ thuộc)". Nó trả về lỗi này khi tôi chạy lệnh trong cùng thư mục của tệp app.ts. Tôi phải tìm tệp typings.json này ở đâu và khi nào tôi nên chạy lệnh?
Ulysses Alves

7

Tôi đã có cùng một vấn đề và tôi đã giải quyết nó bằng cách sử dụng libtùy chọn trong tsconfig.json. Như đã nói bởi basarat trong câu trả lời của mình , một .d.tstệp được TypeScript ngầm định tùy thuộc vào targettùy chọn biên dịch nhưng hành vi này có thể được thay đổi vớilib tùy chọn.

Bạn có thể chỉ định các tệp định nghĩa bổ sung được bao gồm mà không thay đổi phiên bản JS được nhắm mục tiêu. Ví dụ, đây là một phần hiện tại của tôi compilerOptionscho Formscript@2.1 và nó bổ sung hỗ trợ cho es2015các tính năng mà không cần cài đặt bất cứ thứ gì khác:

"compilerOptions": {
    "experimentalDecorators": true,
    "lib": ["es5", "dom", "es6", "dom.iterable", "scripthost"],
    "module": "commonjs",
    "moduleResolution": "node",
    "noLib": false,
    "target": "es5",
    "types": ["node"]
}

Để biết danh sách đầy đủ các tùy chọn có sẵn, hãy kiểm tra tài liệu chính thức .

Cũng lưu ý rằng tôi đã thêm "types": ["node"]và cài đặt npm install @types/nodeđể hỗ trợ require('some-module')trong mã của mình.


5
 typings install dt~es6-shim --save --global

và thêm đường dẫn chính xác vào index.d.ts

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

Đã thử trên @ angular-2.0.0-rc3


Giải pháp này hoạt động hoàn hảo khi chúng ta cần tệp .d.ts trong dự án thư viện.
Robin Đinh

4

Nếu npm install -g typings typings installvẫn không được, xóa node_modulestypings thư mục trước khi thực hiện lệnh này.


4

Đây là suy nghĩ làm thế nào mọi người đang cố gắng làm một cái gì đó khác nhau. Tôi tin rằng các hệ thống này vẫn còn xa phiên bản cuối cùng.

Trong trường hợp của tôi, tôi đã cập nhật từ RC.0 lên RC.5, lỗi này đã xuất hiện.

Đã sửa lỗi của tôi là thay đổi tsconfig.json.

{
    "compilerOptions": {
        "target": "es6", <-- It was es5
        "module": "system",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false,
        "outDir": "../wwwroot/app"
    },
    "compileOnSave": true,
    "exclude": [
        "../node_modules",
        "../typings/main"
    ]
}

1
Điều này giải quyết vấn đề của tôi là tốt. Các phiên bản RC đang nhắm mục tiêu es6 dường như.
Inari

Bây giờ bạn không còn nhắm mục tiêu ES5. Nếu bất cứ điều gì, thay đổi "lib", không "target".
Aluan Haddad

4

thêm gõ.d.ts trong thư mục chính của ứng dụng và ở đó khai báo biến mà bạn muốn sử dụng mỗi lần

declare var System: any;
declare var require: any;

sau khi khai báo điều này trong bộ gõ.d.ts, lỗi cho yêu cầu sẽ không xuất hiện trong ứng dụng ..


4

Tôi chưa quen với Angular nhưng đối với tôi, giải pháp đã được tìm thấy bằng cách nhập Input. Không thể lấy tín dụng cho cái này, tìm thấy nó trên một bảng khác. Đây là một sửa chữa đơn giản nếu bạn gặp vấn đề tương tự nhưng nếu vấn đề của bạn phức tạp hơn, tôi sẽ đọc những thứ ở trên.

Mukesh :

bạn phải nhập dữ liệu đầu vào như thế này ở đầu thành phần con

import { Directive, Component, OnInit, Input } from '@angular/core';

3

Tôi thấy tài liệu này rất hữu ích tại trang web của Angular 2. Cuối cùng nó cũng cho phép tôi làm mọi thứ hoạt động bình thường, trong khi các câu trả lời khác ở đây, để cài đặt các kiểu chữ, làm tôi thất bại với nhiều lỗi khác nhau. (Nhưng đã giúp dẫn tôi đi đúng hướng.)

Thay vì bao gồm es6-hứa và es6-sưu tập, nó bao gồm core-js, đã thực hiện thủ thuật cho tôi ... không có xung đột với các định nghĩa ts cốt lõi của Angular2. Ngoài ra, tài liệu giải thích cách thiết lập tất cả điều này sẽ tự động xảy ra khi cài đặt NPM và cách sửa đổi tệp typings.json của bạn.


2

Angular 2 RC1 đổi tên node_modules/angular2thư mục thành node_modules/angular.

Nếu bạn đang sử dụng gulpfile để sao chép tệp vào thư mục đầu ra, bạn có thể vẫn còn node_modules/angular đang ngồi trong đó có thể bị trình biên dịch chọn và nhầm lẫn giữa địa ngục.

Vì vậy, (cẩn thận) xóa sạch những gì bạn có trong node_modulesphiên bản beta và cũng xóa mọi kiểu chữ cũ và chạy lại typings install.


hoặc cách khác ... làm việc trên các công cụ khác trong 4 tháng và chờ bản phát hành cuối cùng bắt đầu lại từ đầu (đó là những gì tôi đang làm)
Simon_Weaver

2

Cuộc gọi tốt, @VahidN, tôi thấy tôi cần

    "exclude": [
        "node_modules",
        "typings/main",
        "typings/main.d.ts"
    ]

Tôi tsconfigcũng vậy, để ngăn chặn lỗi từ es6-shimchính nó


2

Đừng nhập câu lệnh dưới đây vào tệp JS của bạn.

import 'rxjs/add/operator/map';

Tôi đang ngừng nâng cấp một dự án lên phiên bản mới nhất, do đó, import './rxjs-extensions';tôi đã thêm vào app.component.tstệp rxjs-extend từ hướng dẫn angular2 (bao gồm cả dòng gợi ý của bạn) và dường như đã loại bỏ những lỗi đó.
James

Bạn có thể vui lòng cụ thể hơn. Tập tin JS nào? một bản được biên soạn bởi Typecript? chủ yếu?
mm_

2

Câu trả lời được chấp nhận không cung cấp cách khắc phục khả thi và hầu hết các câu hỏi khác đề xuất cách giải quyết "ba dấu gạch chéo" không còn khả thi nữa, vì browser.d.tsđã bị xóa bởi RC mới nhất của Angular2 và do đó không còn khả dụng nữa.

Tôi đề nghị cài đặt typings mô-đun theo đề xuất của một vài giải pháp ở đây, tuy nhiên không cần thiết phải thực hiện thủ công hoặc toàn cầu - có một cách hiệu quả để làm điều đó chỉ cho dự án của bạn và trong giao diện VS2015. Đây là những gì bạn cần làm:

  • thêm vào typings vào tập tin pack.json của dự án.
  • thêm một scriptkhối trong package.jsontệp để thực thi / cập nhật typingssau mỗi hành động NPM.
  • thêm một typings.jsontệp trong thư mục gốc của dự án có chứa một tham chiếu đến core-js(tổng thể tốt hơn es6-shimatm).

Đó là nó.

Bạn cũng có thể xem chủ đề SO khác này và / hoặc đọc bài đăng này trên blog của tôi để biết thêm chi tiết.


2

Tôi đã nhận được lỗi này sau khi hợp nhất chi nhánh dev của tôi với chi nhánh hiện tại của tôi. Tôi đã dành thời gian để khắc phục vấn đề. Như bạn có thể thấy trong hình dưới đây, không có vấn đề gì trong các mã cả.

nhập mô tả hình ảnh ở đây

Vì vậy, cách khắc phục duy nhất có hiệu quả với tôi là Khởi động lại VSCode


0

Bây giờ bạn phải nhập chúng bằng tay.

import 'rxjs/add/operator/retry';
import 'rxjs/add/operator/timeout';
import 'rxjs/add/operator/delay';
import 'rxjs/add/operator/map';




this.http.post(url, JSON.stringify(json), {headers: headers, timeout: 1000})

         .retry(2)

         .timeout(10000, new Error('Time out.'))

         .delay(10)

         .map((res) => res.json())
        .subscribe(
          (data) => resolve(data.json()),
          (err) => reject(err)
        );

-3

Cập nhật tsconfig.json, thay đổi

"target": "es5"

đến

"target": "es6"

Điều này có thể khiến đầu ra JavaScript của bạn không tương thích với các trình duyệt cũ hơn.
Tom Robinson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.