Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Node.js 从NodeJS服务器设置同构react redux应用程序中存储的初始状态(我正在使用react路由器)_Node.js_Reactjs_Redux_React Router_React Redux - Fatal编程技术网

Node.js 从NodeJS服务器设置同构react redux应用程序中存储的初始状态(我正在使用react路由器)

Node.js 从NodeJS服务器设置同构react redux应用程序中存储的初始状态(我正在使用react路由器),node.js,reactjs,redux,react-router,react-redux,Node.js,Reactjs,Redux,React Router,React Redux,我正在尝试从NodeJS服务器设置redux存储的初始状态。我不确定我错过了什么,以及如何让它发挥作用 这是我的server.js const express = require('express'); const path = require('path'); const webpack = require('webpack'); const webpackDevMiddleware = require('webpack-dev-middleware'); const webpackHotMi

我正在尝试从NodeJS服务器设置redux存储的初始状态。我不确定我错过了什么,以及如何让它发挥作用

这是我的server.js

const express = require('express');
const path = require('path');
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackHotMiddleware = require('webpack-hot-middleware');
const webpackHotServerMiddleware = require('webpack-hot-server-middleware');
const config = require('./webpack/webpack.development.config.js');
const compiler = webpack(config);
const app = express();

app.use(webpackHotMiddleware(compiler.compilers.find(
    compiler => compiler.name === 'client'
)));
app.use(webpackHotServerMiddleware(compiler));
app.listen(3000);
这是我的webpack.development.config

const path = require('path');
module.exports = [
{
    name: 'client',
    target: 'web',
    entry: './routes/client.jsx',
    output: {
        path: path.join(__dirname, 'assets'),
        filename: 'client.js',
        publicPath: '/assets/',
    },
    resolve: {
        extensions: ['.js', '.jsx']
    },
    devtool: 'source-map',
    module: {
        rules: [
            {
                test: /\.(js|jsx)$/,
                exclude: /(node_modules\/)/,
                use: [
                    {
                        loader: 'babel-loader',
                    }
                ]
            },
            {
                test: /\.scss$/,
                use: [
                    {
                        loader: 'style-loader',
                    },
                    {
                        loader: 'css-loader',
                        options: {
                            modules: true,
                            importLoaders: 1,
                            localIdentName: '[name]__[local]___[hash:base64:5]',
                            sourceMap: true
                        }
                    },
                    {
                        loader: 'sass-loader'
                    }
                ]
            },
            { test: /\.html$/, loader: "html-loader" }
        ],
    },
},
];
另外,服务器上也有相同的模块,但我删除了这些模块,以保持简短

这是client.jsx

import React from 'react';
import { createStore } from 'redux'
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
import Routes from './routes.jsx';
import { Provider } from 'react-redux';
import MainStore from '../views/store/MainStore';
import home from './home';

const store = createStore(MainStore, "Name");

ReactDOM.render((
    <Provider store={store}>
        <BrowserRouter>
            <Routes />
        </BrowserRouter>
    </Provider>
), document.getElementById('root'));
我想将const name从home.jsx导入client.jsx,并将存储的初始值设置为这个导入值。我可以通过线路手动完成

const store = createStore(MainStore, "Name");
在client.jsx中。但我不想使用“Name”作为字符串,而是想用home.jsx中的常量值替换它

有什么建议吗

在同构react redux应用程序中设置存储的初始状态

假定任务的典型解决方案是使用预加载状态,预加载状态在SSR阶段计算,并作为序列化信息字段注入呈现的HTML模板中。您还可以创建专用资源,如
/api/initialState.js
,它根据客户端请求和JWT凭据为视图模型创建初始状态


您可以在中看到类似的解决方案,它为服务器上的redux提供了全自动同构存储功能,包括SSR。

Try
const store=createStore(MainStore,home.name)@JeffF。我已经尝试过了,当我在client.jsx中包含“import home from./home';”时,我的Web包编译失败了,因为我收到了诸如无法解析'fs'/'modules'之类的消息,许多这样的消息无法解析节点模块文件中的消息。由于它们被排除在webpack中,我假设我正在进行一些不正确的导入。我在同构方面没有太多经验,但似乎您的客户端代码正在尝试导入您的服务器端代码,这自然不起作用。“fs”模块与客户端无法访问的文件系统相关。@jeff。这就解释了为什么client.jsx中的“import home from./home';”会破坏应用程序。你能推荐我从NodeJS设置redux存储的其他方法吗?
const store = createStore(MainStore, "Name");