我使用Express和Create-React-App(http://myfirst-reactapp.herokuapp.com/)构建了一个简单的基本应用程序。我的项目分为两部分:一部分是服务器(它有一个package.json和一个index.js文件),另一部分是客户端(使用npm create-react-app创建)。
我试图将用户从服务器端重定向到客户端(例如localhost:5000 / test将重定向到localhost:3000 / test),但在将其部署到 Heroku 后,我得到了跟随错误,找不到解决问题的答案:
未捕获的SyntaxError:意外的令牌<
const express = require('express');
const app = express();
const path = require('path');
if (process.env.NODE_ENV === 'production') {
app.use(express.static('/client/build'));
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});
}
const PORT = process.env.PORT || 5000;
app.listen(PORT);
{
"name": "heroku_base",
"version": "1.0.0",
"description": "",
"main": "index.js",
"engines": {
"node": "6.11.2",
"npm": "3.10.10"
},
"scripts": {
"start": "node index.js",
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.2"
}
}
答案 0 :(得分:1)
您正在为快速服务器的每个请求返回index.html文件。
尝试删除此代码
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});
另外,你应该更换
app.use(express.static('/client/build'));
类似
app.use(express.static(path.join(__dirname, 'client/build')));