任何人都能够使用redux和redux-thunk构建应用程序吗?就我而言,它正在使用ionic serve
但与npm run build
. 我不能为设备构建,它只适用于浏览器。
我收到这些 ngc 错误
[19:25:46] ngc:错误:静态解析符号值时遇到错误。调用函数'createStore',不支持函数调用。考虑用对导出函数的引用替换函数或 lambda,解析 c:/Ionic/ionic-redux-test/.tmp/app/app.module.ts 中的符号 AppModule,解析 c:/Ionic/ionic 中的符号 AppModule -redux-test/.tmp/app/app.module.ts at simpleInContext (c:\Ionic\ionic-redux-test\node_modules\@angular\compiler-cli\src\static_reflector.js:469:23) 在 StaticReflector .simplify (c:\Ionic\ionic-redux-test\node_modules\@angular\compiler-cli\src\static_reflector.js:472:22) 在 StaticReflector.annotations (c:\Ionic\ionic-redux-test\node_modules \@angular\compiler-cli\src\static_reflector.js:61:36) 在 _loop_1 (c:
[19:25:46] ngc:编译失败
[19:25:46] ngc 失败:NGC 遇到错误 [19:25:46] 错误:NGC 在 ChildProcess 遇到错误。(c:\Ionic\ionic-redux-test\node_modules\@ionic\app-scripts\dist\ngc.js:62:24) 在 emitTwo (events.js:87:13) 在 ChildProcess.emit (events.js :172:7) 在 ChildProcess.cp.emit (c:\Ionic\ionic-redux-test\node_modules\cross-spawn\lib\enoent.js:40:29) 在可能关闭 (internal/child_process.js:821: 16) 在 Process.ChildProcess._handle.onexit (internal/child_process.js:211:5) Error running ionic app script "build": Error: NGC 遇到错误
这些是我在@NgModule之前对 app.module.ts 所做的修改
//Redux - ReduxThunk - rootReducer
import { createStore, applyMiddleware } from 'redux';
import ReduxThunk from 'redux-thunk';
import { rootReducer } from '../modules/rootReducer';
const appStore = createStore(
rootReducer,
applyMiddleware(ReduxThunk)
);
并将其添加到 providers 数组中:
providers: [
{ provide: 'AppStore', useValue: appStore }
]
编辑:在app.module.ts中进行这些更改并将const appStore转换为export function之后。
export function appStore(): any {
return createStore(
rootReducer,
applyMiddleware(ReduxThunk)
);
};
我能够编译并运行该项目,但随后在 home.ts 中出现此错误
this.appStore.getState 不是函数类型错误:
this.appStore.getState 不是函数
这就是我在 home.ts 中所拥有的
export class HomePage {
constructor(
@Inject('AppStore') public appStore: any,
) { }
testRedux(){
this.appStore.dispatch((dispatch)=> {
dispatch({type: 'INCREMENT'});});
console.log(this.appStore.getState().increment.counter);
}
}
关于如何解决这个问题的任何想法?