我想在我的应用中配置生产环境(使用create-react-app)。 也许这是一个愚蠢的问题,因为我正在搜索并且有很多关于此的文章,但这些都没有帮助我。另外,我在create-react-app here(制作)和here(开发)中使用了代码,但仍无效。
对于服务器端,我使用节点并且所有API都在响应中的开发模式下运行良好。但是当我使用生产模式时,它无法正常工作。
它刚刚回归
SyntaxError:意外的令牌<在位置0的JSON中
在浏览器控制台中。
我无法在生产模式下访问服务器中的路由。
我该如何解决?帮助赞赏。
这是我的应用树,前端文件夹包含我的反应代码并在不同的端口上运行(服务器:3000,反应:生产:3001,开发:5000)。 我已将这行代码添加到app.js:
app.use(express.static(path.join(__dirname, 'front-end/build')));
app.get('*', function (req, res) {
res.sendFile(path.join(__dirname, 'front-end/build', 'index.html'));
});
这在www.js:
if (process.env.NODE_ENV === 'production') {
app.use(express.static('front-end/build'));
}
答案 0 :(得分:2)
我找到了答案,并且我的应用现在正在生产模式下工作,并且已经部署了它。 我只是将以下行添加到服务器端代码(节点应用程序)的根目录中的app.js中:
let root = path.join(__dirname, '..', 'myapp/fron-end/build');
app.use(express.static(root));
app.use(function(req, res, next) {
if (req.method === 'GET' && req.accepts('html') && !req.is('json') &&
!req.path.includes('.')) {
res.sendFile('index.html', { root });
} else next();
});
此处 myapp 是我的项目文件夹(服务器端)的名称,而 fron-end 是我的前端文件夹的名称,其中包括具有以下内容的builds文件夹为生产而创建。 (我将前端文件夹放在服务器端文件夹内)
此链接对我有帮助。 Uncaught SyntaxError: Unexpected token < #1812
希望这对其他人有帮助。