React + express 发布后的路由问题
写一简单的DEMO,create-react-app + Express 后台访问数据库,react前端展示。开发环境跑得很正常。
服务端发布环境也很简单,装node 10.9. ,按照网上方法,npm run build 后,把build 文件夹放到服务端代码的public 下。 一并拷贝到到node 10.9 服务器上,运行localhost:3001 空白页,路由不会配置了。
app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/supplies');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/supplies', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
index.js
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
//res.render('index', { title: 'Express' });
console.log('hello will!');
//path.resolve(__dirname,'../public/build/index.html')
res.sendFile('E:/www/react-backend/public/build/index.html');
});
module.exports = router;
localhost:3001 空白,
服务端输出
hello will!
[0mGET / [36m304 [0m0.620 ms - -[0m
[0mGET /static/css/main.0d5ac3e0.css [33m404 [0m10.199 ms - 1022[0m
[0mGET /static/js/main.ceae68dd.js [33m404 [0m18.856 ms - 1022[0m
调试发现
指向“http://localhost:3001/static/js/main.ceae68dd.js”的 <script> 加载失败。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在
packge.json
里面加上homepage
的配置,如果最后发布地址是服务器根路径,那么就配置homepage:'http://localhost:3001'
,然后重新打包,应该就可以了吧