【发布时间】:2020-01-31 16:53:29
【问题描述】:
我正在努力弄清楚为什么我无法使用 NgRx 版本 7.4.0 注册我的效果。我已经完全剥离了我的效果类以寻找解决此问题的方法,但我仍然收到以下错误:
main.79a79285b0ad5f8b4e8a.js:33529 Uncaught TypeError: ctor is not a constructor
at _createClass (main.79a79285b0ad5f8b4e8a.js:33529)
at _createProviderInstance (main.79a79285b0ad5f8b4e8a.js:33501)
at initNgModule (main.79a79285b0ad5f8b4e8a.js:33432)
at new NgModuleRef_ (main.79a79285b0ad5f8b4e8a.js:34161)
at Object.createNgModuleRef (main.79a79285b0ad5f8b4e8a.js:34150)
at NgModuleFactory_.push../node_modules/@angular/core/fesm5/core.js.NgModuleFactory_.create (main.79a79285b0ad5f8b4e8a.js:36687)
at main.79a79285b0ad5f8b4e8a.js:30069
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (polyfills.f00ff83aa2c2b28f8bcd.js:7646)
at Object.onInvoke (main.79a79285b0ad5f8b4e8a.js:29604)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (polyfills.f00ff83aa2c2b28f8bcd.js:7645)
模块定义如下:
@NgModule({
imports: [
CommonModule,
StoreModule.forRoot({settings: settingsReducer}),
EffectsModule.forRoot([SettingsEffects])
],
declarations: [/*..other declarations..*/],
exports: [/*..other exports..*/],
providers: [/*..other providers..*/],
})
export class MyModule {
}
我的package.json 中的依赖项如下所示:
"dependencies": {
"@ngrx/effects": "7.4.0",
"@ngrx/router-store": "7.4.0",
"@ngrx/store": "7.4.0",
"@ngrx/store-devtools": "7.4.0",
"ng2-translate": "5.0.0"
},
我的开发依赖项如下所示:
"devDependencies": {
"@angular/common": "7.2.15",
"@angular/compiler": "7.2.15",
"@angular/compiler-cli": "7.2.15",
"@angular/core": "7.2.15",
"@angular/platform-browser": "7.2.15",
"@angular/platform-browser-dynamic": "7.2.15",
"@angular/router": "7.2.15",
"@compodoc/compodoc": "1.0.9",
"@types/jasmine": "2.5.54",
"@types/jest": "19.2.4",
"@types/node": "7.0.43",
"awesome-typescript-loader": "3.2.3",
"babel-preset-env": "1.6.0",
"codelyzer": "4.5.0",
"core-js": "2.6.10",
"del": "2.2.2",
"gulp": "3.9.1",
"gulp-header": "1.8.9",
"gulp-rename": "1.2.2",
"gulp-replace": "0.6.1",
"gulp-rollup": "2.14.0",
"gulp-shell": "0.6.3",
"inquirer": "3.2.2",
"jasmine-marbles": "0.6.0",
"jest": "23.6.0",
"jest-preset-angular": "6.0.2",
"node-sass": "4.5.3",
"node-sass-tilde-importer": "1.0.0",
"node-watch": "0.5.5",
"rollup": "0.42.0",
"run-sequence": "1.2.2",
"rxjs": "6.5.3",
"rxjs-compat": "6.5.3",
"ts-node": "7.0.1",
"tslint": "5.20.0",
"typescript": "3.2.4",
"zone.js": "0.8.17"
}
SettingsEffects 类(我已将其剥离,以防问题出在效果类本身)如下所示:
@Injectable()
export class SettingsEffects {
constructor(
private actions$: Actions
) {
}
}
在其原始状态下,SettingsEffects 类产生相同的错误。
如果我删除这一行:
EffectsModule.forRoot([SettingsEffects])
从导入中,应用程序成功启动;但当然效果不运行,这不好。
我在全球互联网上进行了搜索,但没有任何线索说明为什么会发生这种情况。该模块位于应用主 GUI 导入的库中,我们一直小心确保没有包版本冲突:所有内容都使用商店模块的 7.4.0 版本。
请帮忙!现在已经为此拉了一天的头发!
【问题讨论】:
-
您可以尝试向 forRoot 提供一个空数组,看看会发生什么: EffectsModule.forRoot([]),
-
也看看这个讨论 => stackoverflow.com/questions/44597532/…
标签: javascript angular typescript redux ngrx