编译失败。
./ src / app / hero.service.ts找不到模块:错误:无法解决 ' /可观察/的&#39 rxjs; in' C:\ Users \ Admin \ angular \ myheroes \ src \ app'
@ ./src/app/hero.service.ts 13:11-40 @ ./src/app/app.module.ts @ ./src/main.ts @ multi webpack-dev-server/client?http://0.0.0.0:0 ./src/main.ts
我的代码为hero.service.ts
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { of } from 'rxjs/Observable/of';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';
import { MessageService } from './message.service';
@Injectable()
export class HeroService {
constructor(private messageService: MessageService) { }
getHeroes(): Observable<Hero[]>
{
// todo: send the message _after_fetching the heroes
this.messageService.add('HeroService: fetched heroes');
return of (HEROES);
}
}
答案 0 :(得分:32)
我收到此错误是因为rxjs的版本较旧,而Angular 6需要最新版本的rxjs。
此命令将安装与Angular 6兼容的最新版本。
npm install --save rxjs-compat
答案 1 :(得分:17)
正如Aravind在他的评论中指出的那样,案件在这里很重要。而不是
UINavigationController
尝试...
let yourviewController = self.storyboard?.instantiateViewController(withIdentifier: "yourVCIdentifer")
let nav = UINavigationController(rootViewController: yourviewController)
self.present(nav, animated: true, completion: nil)
答案 2 :(得分:10)
通常,您的项目中会有一个名为rxjs-operators.ts
的文件,用于导入您需要的rxjs
部分。您应该将此行添加到该文件中:
import 'rxjs/add/observable/of';
同时取出这一行:
import { of } from 'rxjs/observable/of';
或者,直接将其导入您的模块,看看它是否有效。
答案 3 :(得分:9)
对于截至7月13日仍在世的人,导入模块的正确方法如下:
import { Observable, of } from 'rxjs';
我敢肯定,由于访问大写字母O和小写字母o文件夹的命名约定不正确,因此它们以更全面的方式包含了它。
注意:这是流血的边缘。 ;)
答案 4 :(得分:2)
我有同样的问题,我解决了以下问题......
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
使用地点:
Observable.of(something)
注意:总是在.find看一下很重要,你可以找到当前版本的文档
答案 5 :(得分:1)
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs/observable/of';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';
始终确保引用文件的顺序应该是正确的顺序。
答案 6 :(得分:1)
我对angular / core和rxjs都有相同的错误。 这是解决问题的方法,方法是明确告诉编译器在哪里可以找到该库:
mat-cell
答案 7 :(得分:0)
在我的情况下,由于 webpack.config.js 中的rxjs路径,我收到了错误。
我使用 angular-cli 在C盘下创建了项目,并使用ng eject
弹出项目并生成 webpack.config.js 。< / p>
实际上 angular-cli 为rxjs注入绝对路径,如下所示:
"alias": {
"rxjs/observable/of": "C:\\my_project_directory\\node_modules\\rxjs\\_esm5\\observable\\of.js"
...}
手动将其修改为相对路径后
"alias": {
"rxjs/observable/of": "rxjs\\_esm5\\observable\\of.js"
.. }
它开始工作了。
答案 8 :(得分:0)
关于这个问题的答案是矛盾的,这个问题很好,但是没有真正有用的答案。
这与从6.0版开始的Rxjs API的更改有关
由于RxJ的版本不同,这里的答案令人困惑,这就是问题所在。以“这对我有用”开头或结尾的答案是没有用的,因为这不是答案,这是它可能如何工作的一个示例,但是您从来没有完整的故事,因此它没有用,因为它无法解释任何内容
这一切都很好地解释了: https://academind.com/learn/javascript/rxjs-6-what-changed/ 如果您有12分钟的时间,则此Youtube也对此进行了很好的说明: https://www.youtube.com/watch?v=X9fdpGthrXA
我知道在StackOverflow中不赞赏外部链接,这是有充分的理由的,尽管知道的不是很多,但对于简短而有用的答案,它还是有一定解释的。
因此,简而言之,该问题与版本6.0之前的Rxjs API和RxJs 6.0之后的版本之间的差异有关 如果要保持6.0之前的代码不变,则应安装rxjs-compat,这不是很糟糕
更好的办法是更改代码,并保持最新状态并为将来做好准备。
答案 9 :(得分:0)
Angular 7和RxJS 6 +
import { Observable } from 'rxjs'
import { tap, map, switchMap, catchError } from 'rxjs/operators'
所有运算符现在都位于rxjs/operators
中。
答案 10 :(得分:0)
下一步对我有用。
1)导入的运算符
import 'rxjs/add/observable/of';
import { of } from 'rxjs/observable/of';
2)安装 rxjs-compat 软件包
$ npm i --save rxjs-compat
答案 11 :(得分:0)
接下来的步骤对我有用。
NSArray *items = [[UIPasteboard generalPasteboard] itemProviders];
for (NSInteger i = 0; i < itemProvider.count; i++) {
NSItemProvider *itemProvider = itemProvider[i];
NSString *identifier = itemProvider.registeredTypeIdentifiers[0];
[itemProvider loadDataRepresentationForTypeIdentifier:identifier completionHandler:^(NSData * _Nullable data, NSError * _Nullable error) {
NSMutableDictionary *result;
if (!error) {
NSString *ext = (__bridge NSString *)(UTTypeCopyPreferredTagWithClass((__bridge CFStringRef _Nonnull)(identifier), kUTTagClassFilenameExtension));
if ([ext isEqualToString:@"jpeg"]) {
ext = @"jpg";
}
NSString *mime = (__bridge NSString *)(UTTypeCopyPreferredTagWithClass((__bridge CFStringRef _Nonnull)(identifier), kUTTagClassMIMEType));
if (!mime) {
mime = @"application/*";
}
NSString *filename = itemProvider.suggestedName;
NSString *path = [folderPath stringByAppendingPathComponent:filename];
[data writeToFile:path options:NSDataWritingAtomic error:&error];
}
}
}