实现 ngRx 时出错“类型 'Actions<Action>' 上不存在属性 'pipe'。”
Posted
技术标签:
【中文标题】实现 ngRx 时出错“类型 \'Actions<Action>\' 上不存在属性 \'pipe\'。”【英文标题】:Error while implementing ngRx "Property 'pipe' does not exist on type 'Actions<Action>'."实现 ngRx 时出错“类型 'Actions<Action>' 上不存在属性 'pipe'。” 【发布时间】:2020-05-22 04:06:08 【问题描述】:我正在使用以下版本:
@ngrx/effects@8.6.0 @ngrx/store@8.6.0@ngrx/core@1.2.0
@angular/cli@8.3.25
进口:
import BookService from './../services/book.service';
import Actions, Effect, ofType from '@ngrx/effects';
import mergeMap, map from 'rxjs/operators';
import Action from '@ngrx/store';
import * as types from './action.types';
import * as bookActions from './book.actions';
构造函数:
constructor(private service: BookService,
private actions$: Actions)
@Effect() loadBooks$: Observable<Action> = this.actions$.pipe(
ofType<bookActions.loadBooksAction>(types.LOAD_BOOKS),
mergeMap(() =>
this.service.getAllBooks().pipe(map(books =>
new bookActions.loadBooksSuccessAction(books)))
)
)
错误:“操作”类型上不存在属性“管道”。
【问题讨论】:
请分享您的导入,我认为有错误。 好的,请也显示你的构造函数。 在问题中更新 【参考方案1】:问题是依赖@ngrx/core@1.2.0
。这是 ngrx
的旧版本和已弃用的软件包。
你必须删除它。
【讨论】:
删除它并安装最新的? 但是最新版本本身是1.2.0 npmjs.com/package/@ngrx/core 不只是删除它。最新版本的ngrx
只需要store
和effects
。
检查您的其他依赖项到package.json
。备份 node_modules
文件夹和 yarn.lock
并尝试使用 yarn install
重新安装所有依赖项。
我没用yarn包管理器有必要用吗?如果我是愚蠢的,我只是角度方面的新手,请原谅我【参考方案2】:
首先,ngrx v8 使用新的syntax,所以你可能想用你的代码检查它
来自文档的示例
search$ = createEffect(() => (
// assign default values
debounce = 300,
scheduler = asyncScheduler
= ) =>
this.actions$.pipe(
ofType(BookActions.search),
debounceTime(debounce, scheduler),
...
)
);
其次在你的 package.json 中删除 package-lock.json 和 @ngrx/core
包(不需要这个)
然后像这样更新 package.json
"@ngrx/effects": "^8.6.0",
"@ngrx/store": "^8.6.0",
"@ngrx/store-devtools": "^8.6.0",
然后运行
npm cache clean --force
npm i
如果问题仍然存在,您可以删除 node_modules 文件夹并运行npm i
【讨论】:
以上是关于实现 ngRx 时出错“类型 'Actions<Action>' 上不存在属性 'pipe'。”的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Ngrx 读取未定义的属性“firebaseApp”