gpt4 book ai didi

reactjs - 错误无法读取未定义的属性 getState - Redux with NextJS

转载 作者:行者123 更新时间:2023-12-04 17:32:53 25 4
gpt4 key购买 nike

我正在尝试使用 redux 制作一个 nextjs 应用程序,并且我正在设置基本框架。
它如下所示。

服务器.js

const express = require("express");
const nextjs = require("next");
const { ROUTES, ROUTE_PATHS } = require("./utils/constants");

const dev = process.env.NODE_ENV !== "production";
const PORT = process.env.PORT || 3001;

const app = nextjs({ dev });
const handle = app.getRequestHandler();

app
.prepare()
.then(() => {
const server = express();

server.get(ROUTES.HOME_ROUTE, (req, res) => {
app.render(req, res, ROUTE_PATHS.HOME_ROUTE_PATH, {});
});

server.get("*", (req, res) => handle(req, res));
server.listen(PORT, err => {
if (err) throw err;
console.log(`> Ready on http://localhost:${PORT}/`);
});
})
.catch(e => {
console.error(e.stack);
process.exit(1);
});

_app.js
import React from "react";
import { Provider } from "react-redux";
import App from "next/app";
import withRedux from "next-redux-wrapper";

import configureStore from "./../redux/store";

class Application extends App {
static async getInitialProps({ Component, ctx }) {
const pageProps = Component.getInitialProps
? await Component.getInitialProps(ctx)
: {};
return { pageProps };
}
render() {
const { Component, pageProps, store } = this.props;
return (
<Provider store={store}>
<Component {...pageProps} />
</Provider>
);
}
}

export default withRedux(configureStore)(Application);

商店.js
import { createStore, applyMiddleware, compose } from "redux";
import rootReducer from "./rootReducer";

export default (initialState = {}, options) => {
let composeEnhancers = compose;
if (process.env.NODE_ENV !== "production" && typeof window === "object") {
if (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {
composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({});
}
const middlewares = [];
const enhancers = [applyMiddleware(...middlewares)];
return createStore(
rootReducer,
initialState,
composeEnhancers(...enhancers)
);
}
};

每当我尝试运行客户端时,都会收到错误消息,
Cannot read property 'getState' of undefined
TypeError: Cannot read property 'getState' of undefined
at Object.<anonymous> (/Users/sriram/Desktop/boilerplate/client/node_modules/next-redux-wrapper/lib/index.js:155:75)
at step (/Users/sriram/Desktop/boilerplate/client/node_modules/next-redux-wrapper/lib/index.js:56:23)
at Object.next (/Users/sriram/Desktop/boilerplate/client/node_modules/next-redux-wrapper/lib/index.js:37:53)
at fulfilled (/Users/sriram/Desktop/boilerplate/client/node_modules/next-redux-wrapper/lib/index.js:28:58)

我觉得在设置 redux 时一定存在某种问题,但我无法弄清楚在哪里解决这个问题。由于没有任何适当的堆栈跟踪,有没有其他人遇到过这个问题?我如何解决它?

最佳答案

您的 createStore 可能有问题功能。

export default (initialState = {}, options) => {
let composeEnhancers = compose;

// FIXME: it returns undefined in some cases
if (process.env.NODE_ENV !== "production" && typeof window === "object") {
if (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) {
composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({});
}
const middlewares = [];
const enhancers = [applyMiddleware(...middlewares)];
return createStore(
rootReducer,
initialState,
composeEnhancers(...enhancers)
);
}
};

您最好按照以下方式编写它:
export default (initialState = {}, options) => {
let composeEnhancers = compose;

if (
process.env.NODE_ENV !== "production"
&& typeof window === "object"
&& window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
) {
composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({});
}

const middlewares = [];
const enhancers = [applyMiddleware(...middlewares)];

return createStore(
rootReducer,
initialState,
composeEnhancers(...enhancers)
);
}

关于reactjs - 错误无法读取未定义的属性 getState - Redux with NextJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57926058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com