В настоящее время я работаю над проектом с использованием Redux-Saga, Next.js и TypeScript и испытываю трудности с использованием getServerSideProps
. С импортированной оболочкой вокруг getServerSideProps
я продолжаю получать следующую ошибку типа в «любой» 2-й строке:
Если я избавлюсь от ввода ': any', ошибка будет отображаться от асинхронного до => как:
Аргумент типа '(контекст: любой) => Promise<{ props: {}; } | undefined>» не может быть назначен параметру типа «GetServerSidePropsCallback<any, any>». Введите 'Promise<{ props: {}; } | undefined>» нельзя присвоить типу «GetServerSideProps<any, ParsedUrlQuery>». Введите 'Promise<{ props: {}; } | undefined>' не соответствует подписи '(контекст: GetServerSidePropsContext): Promise<GetServerSidePropsResult>'.
/pages/MyPage.tsx
export const getServerSideProps: GetServerSideProps<any> =
wrapper.getServerSideProps(async (context): any=> {. // error is shown here on any
const cookies = nookies.get(context);
if (cookies.userId && cookies.token) {
context.store.dispatch(
{ type: userActionTypes.LOAD_MYPROFILE_REQUEST },
cookies.userId,
);
context.store.dispatch(
{ type: userActionTypes.LOAD_CARDS_REQUEST },
cookies.userId,
cookies.token,
);
context.store.dispatch(END);
await context.store.sagaTask.toPromise();
} else {
return {
props: {},
};
}
});
Это наш магазин:
/store/configureStore.ts
export interface SagaStore extends Store {
sagaTask?: Task;
}
const configureStore: MakeStore<RootState> = () => {
const sagaMiddleware = createSagaMiddleware();
const middlewares = [sagaMiddleware];
const enhancer =
process.env.NODE_ENV === 'production'
? compose(applyMiddleware(...middlewares)) //배포용 미들웨어
: composeWithDevTools(applyMiddleware(...middlewares)); // 개발용 미들웨어
const store = createStore(rootReducer, enhancer);
(store as SagaStore).sagaTask = sagaMiddleware.run(rootSaga);
return store;
};
const wrapper = createWrapper<RootState>(configureStore, {
debug: process.env.NODE_ENV === 'development', // true일 때 디버그가 더 자세히 뜹니다.
});
export default wrapper;
Какую версию next-redux-wrapper вы используете?