首先,我想说我是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
答案 0 :(得分:1)
您正在同一端口上运行前端和后端。转到您的react应用的package.json并将您的启动脚本替换为以下脚本:
"scripts": {
"start": "set PORT=3007 && react-scripts start",
// the rest of your scripts
}
这将是解决您的问题的第一步。如果您在此之后仍然遇到错误,请告诉我们。
答案 1 :(得分:-1)
我再次使用npm
运行该应用程序。
在我再次输入的命令中,在应用程序文件夹中输入了npm start
。