Angular 2 beta.17:“Observable<Response>”类型上不存在属性“map”

新手上路,请多包涵

我刚刚从 Angular 2 beta16 升级到 beta17 ,这又需要 rxjs 5.0.0-beta.6。 (此处的变更日志: https ://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28)在 beta16 中,关于 Observable/map 功能,一切运行良好。我升级后出现以下错误,并且在打字稿尝试转译时发生:

  1. ‘Observable’ 类型上不存在属性 ‘map’(在我使用带有 observable 的地图的任何地方)
  2. c:/path/node_modules/rxjs/add/operator/map.d.ts(2,16): 错误 TS2435: 环境模块不能嵌套在其他模块或命名空间中。
  3. c:/path/node_modules/rxjs/add/operator/map.d.ts(2,16):错误 TS2436:环境模块声明无法指定相对模块名称。

我已经看到了这个问题/答案,但它并没有解决问题: Angular2 beta.12 and RxJs 5 beta.3 Observable errors with Angular2 beta.12 and RxJs 5 beta.3

我的 appBoot.ts 看起来像这样(我已经在引用 rxjs/map):

 ///<reference path="./../node_modules/angular2/typings/browser.d.ts"/>
import {bootstrap} from "angular2/platform/browser";
import {ROUTER_PROVIDERS} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
[stuff]
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import {enableProdMode} from 'angular2/core';
import { Title } from 'angular2/platform/browser';

//enableProdMode();
bootstrap(AppDesktopComponent, [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS,
    Title
]);

有人知道发生了什么事情吗?

原文由 brando 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 720
2 个回答

我将我的 gulp-typescript 插件升级到最新版本(2.13.0),现在它可以顺利编译。

更新 1:我以前使用 gulp-typescript 版本 2.12.0

更新 2:如果您要升级到 Angular 2.0.0-rc.1,您需要在 appBoot.ts 文件中执行以下操作:

 ///<reference path="./../typings/browser/ambient/es6-shim/index.d.ts"/>
import { bootstrap } from "@angular/platform-browser-dynamic";
import { ROUTER_PROVIDERS } from '@angular/router-deprecated';
import { HTTP_PROVIDERS } from '@angular/http';
import { AppComponent } from "./path/AppComponent";
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
// import 'rxjs/Rx'; this will load all features
import { enableProdMode } from '@angular/core';
import { Title } from '@angular/platform-browser';

//enableProdMode();
bootstrap(AppComponent, [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS,
    Title
]);

重要的是参考 es6-shim/index.d.ts

这假设您已经安装了 es6-shim 类型,如下所示: 在此处输入图像描述

更多关于从 Angular 安装的类型: https ://angular.io/docs/ts/latest/guide/typescript-configuration.html#!#typings

原文由 brando 发布,翻译遵循 CC BY-SA 3.0 许可协议

我面临着类似的错误。当我做了这三件事时,它就解决了:

  1. 更新到最新的 rxjs:
    npm install rxjs@6 rxjs-compat@6 --save

  1. 导入地图和承诺:
    import 'rxjs/add/operator/map';
   import 'rxjs/add/operator/toPromise';

  1. 添加了新的导入语句:
    import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';

原文由 lokanath 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进