React / NodeJS-转到localhost:3000

时间:2018-12-04 10:02:21

标签: javascript node.js reactjs webpack web-applications

首先,我想说我是React和NodeJS的新开发人员。

我想使用以下技术: -作为客户做出反应 -NodeJS作为服务器 -用于构建文件的Webpack。

我的项目结构如下:

我的应用程序/

webpack.server.js

webpack.client.js

server.js

client / client.js

client / app.js

client / components / header.js

client / components / mainLayout.js

client / components / footer.js

页眉和页脚文件并不重要,所以我不在这里写。 重要文件如下:

mainLayout.js

import React, { Component } from 'react';

// import component
import Header from './header';
import Footer from './footer';

class MainLayout extends React.Component {
  constructor (props) {
    super(props)
  }

  render() {
        return (
          <div className="App">
            <Header />

              {this.props.children}

            <Footer />
          </div>
        );
    }
}

export default MainLayout;

app.js

import React, { Fragment } from 'react';
import { Route, Switch } from 'react-router-dom';

import MainLayout from './components/mainLayout'

const AppComponent = () =>
    <Switch>
        <Route path="/" exact render={props => (
            <MainLayout>
                <h1>Hello World</h1>
            </MainLayout>
        )} />
    </Switch>
;

export default AppComponent;

client.js

import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter} from 'react-router-dom';

import AppComponent from './app';

ReactDOM.hydrate(
    <BrowserRouter>
        <AppComponent />
    </BrowserRouter>,
    document.querySelector('#root')
);

server.js

import express from 'express';
import React from 'react';

import AppComponent from './client/app'

var app = express();

const PORT = 3000;

app.use("/", express.static("build/public"));

app.get("/", (req, res) => {
    res.send(<AppComponent />)
});

app.listen(PORT, () => console.log('Now browse to localhost:3000'));

运行我的项目:

npm run build

npm run dev

但是当我要去http://localhost:3000时,我的页面响应是 {“ key”:null,“ ref”:null,“ props”:{},“ _ owner”:null,“ _ store”:{}}。

我不明白为什么会出错,可能有些东西逃脱了我,但我没有。

能帮我吗?

预先感谢您, AS

2 个答案:

答案 0 :(得分:1)

您正在同一端口上运行前端和后端。转到您的react应用的package.json并将您的启动脚本替换为以下脚本:

"scripts": {
    "start": "set PORT=3007 && react-scripts start",
     // the rest of your scripts
}

这将是解决您的问题的第一步。如果您在此之后仍然遇到错误,请告诉我们。

答案 1 :(得分:-1)

我再次使用npm运行该应用程序。

在我再次输入的命令中,在应用程序文件夹中输入了npm start