0

reduxredux-thunkでアプリを構築できた人はいますか? 私の場合、それはで動作してionic serveいますが、で失敗していnpm run buildます。デバイス用にビルドできません。ブラウザでのみ機能します。

これらの NGC エラーが表示されます

[19:25:46] ngc: エラー: シンボル値を静的に解決中にエラーが発生しました。関数 'createStore' を呼び出しています。関数呼び出しはサポートされていません。関数またはラムダをエクスポートされた関数への参照に置き換え、c:/Ionic/ionic-redux-test/.tmp/app/app.module.ts のシンボル AppModule を解決し、c:/Ionic/ionic のシンボル AppModule を解決することを検討してください。 -redux-test/.tmp/app/app.module.ts の 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) で MaybeClose (internal/child_process.js:821: 16) Process.ChildProcess._handle.onexit (internal/child_process.js:211:5) で、イオン アプリケーション スクリプト「ビルド」の実行中にエラーが発生しました: エラー: 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 appStoreexport functionに変更した後。

export function appStore(): any {
  return createStore(
            rootReducer,
            applyMiddleware(ReduxThunk)
          );
};

プロジェクトをコンパイルして実行することはできますが、home.ts でこのエラーが発生します。

this.appStore.getState は関数ではありません TypeError:

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);
    }
}

これに取り組む方法についてのアイデアはありますか?

4

1 に答える 1

2

app.module.tsの次の変更で解決できました

// const appStore = createStore(
//   rootReducer,
//   applyMiddleware(ReduxThunk)
// );

export function appStore(): any {
  return createStore(
            rootReducer,
            applyMiddleware(ReduxThunk)
          );
};

編集:プロバイダー配列でuseValueuseFactoryに変更します。2番目の問題を解決します。

  providers: [
    { provide: 'AppStore', useFactory: appStore }
  ]
于 2016-10-07T21:29:33.670 に答える