Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NgRx 7.4.0:未捕获类型错误:ctor不是构造函数_Javascript_Angular_Typescript_Redux_Ngrx - Fatal编程技术网

Javascript NgRx 7.4.0:未捕获类型错误:ctor不是构造函数

Javascript NgRx 7.4.0:未捕获类型错误:ctor不是构造函数,javascript,angular,typescript,redux,ngrx,Javascript,Angular,Typescript,Redux,Ngrx,我正在努力找出为什么我不能使用NgRx版本7.4.0注册我的效果。我已经完全剥离了我的特效类,寻找解决此问题的方法,但我仍然收到以下错误: main.79a79285b0ad5f8b4e8a.js:33529 Uncaught TypeError: ctor is not a constructor at _createClass (main.79a79285b0ad5f8b4e8a.js:33529) at _createProviderInstance (main.79a79

我正在努力找出为什么我不能使用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({
进口:[
公共模块,
forRoot({settings:settingsReducer}),
EffectsModule.forRoot([SettingsEffects])
],
声明:[/*…其他声明..*/],
出口:[/*…其他出口..*/],
提供者:[/*…其他提供者..*/],
})
导出类MyModule{
}
my
package.json中的依赖项如下所示:

“依赖项”:{
“@ngrx/effects”:“7.4.0”,
“@ngrx/路由器存储”:“7.4.0”,
“@ngrx/store”:“7.4.0”,
“@ngrx/store devtools”:“7.4.0”,
“ng2翻译”:“5.0.0”
},
我的开发依赖项如下所示:

“开发依赖性”:{
“@angular/common”:“7.2.15”,
“@angular/compiler”:“7.2.15”,
“@angular/compiler cli”:“7.2.15”,
“@angular/core”:“7.2.15”,
“@角度/平台浏览器”:“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”,
“很棒的typescript加载程序”:“3.2.3”,
“巴别塔预设环境”:“1.6.0”,
“codelyzer”:“4.5.0”,
“核心js”:“2.6.10”,
“删除”:“2.2.2”,
“吞咽”:“3.9.1”,
“吞咽头”:“1.8.9”,
“吞咽重命名”:“1.2.2”,
“大口替换”:“0.6.1”,
“吞咽汇总”:“2.14.0”,
“吞壳”:“0.6.3”,
“查询者”:“3.2.2”,
“茉莉花大理石”:“0.6.0”,
“笑话”:“23.6.0”,
“开玩笑”:“6.0.2”,
“节点sass”:“4.5.3”,
“节点sass瓷砖导入器”:“1.0.0”,
“节点监视”:“0.5.5”,
“汇总”:“0.42.0”,
“运行顺序”:“1.2.2”,
“rxjs”:“6.5.3”,
“rxjs compat”:“6.5.3”,
“ts节点”:“7.0.1”,
“tslint”:“5.20.0”,
“类型脚本”:“3.2.4”,
“zone.js”:“0.8.17”
}
settingseeffects
类-我已将其剥离回去,以防问题出现在effects类本身-如下所示:

@Injectable()
导出类设置效果{
建造师(
私有操作$:操作
) {
}
}
在原始状态下,
settingseeffects
类会产生相同的错误

如果我删除此行:

EffectsModule.forRoot([SettingsEffects])
从导入中,应用程序成功启动;但当然效果不会运行,这是不好的

我在万维网上搜索过,但没有任何线索可以解释为什么会发生这种情况。该模块位于应用程序的主GUI导入的库中,我们一直小心确保没有包版本冲突:所有模块都使用商店模块的7.4.0版本


请帮忙!这件事让我紧张了一天

我相信您不能将
forRoot()
用于这样的功能模块

@NgModule({
    imports: [
        CommonModule,
        StoreModule.forRoot({settings: settingsReducer}),
        EffectsModule.forRoot([SettingsEffects])
    ],
    declarations: [/*..other declarations..*/],
    exports: [/*..other exports..*/],
    providers: [/*..other providers..*/],
})
export class MyModule {
}

@NgModule({
    imports: [
        CommonModule,
        StoreModule.forFeature("settings", settingsReducer),
        EffectsModule.forFeature([SettingsEffects])
    ],
    declarations: [/*..other declarations..*/],
    exports: [/*..other exports..*/],
    providers: [/*..other providers..*/],
})
试着像这样改变

@NgModule({
    imports: [
        CommonModule,
        StoreModule.forRoot({settings: settingsReducer}),
        EffectsModule.forRoot([SettingsEffects])
    ],
    declarations: [/*..other declarations..*/],
    exports: [/*..other exports..*/],
    providers: [/*..other providers..*/],
})
export class MyModule {
}

@NgModule({
    imports: [
        CommonModule,
        StoreModule.forFeature("settings", settingsReducer),
        EffectsModule.forFeature([SettingsEffects])
    ],
    declarations: [/*..other declarations..*/],
    exports: [/*..other exports..*/],
    providers: [/*..other providers..*/],
})
另外,初始化特性存储的正确方法是提供2个参数,而不是像您现在所做的那样传入对象

StoreModule.forRoot({settings: settingsReducer}) // this is wrong

StoreModule.forFeature("settings", settingsReducer) // this is correct

您可以尝试向forRoot提供一个空数组,看看会发生什么:EffectsModule.forRoot([]),也可以看看这个讨论=>