在create-react-app中配置生产环境(SyntaxError:Unexpected token< in JSON in position 0)

时间:2018-06-02 23:34:05

标签: node.js reactjs production-environment create-react-app

我想在我的应用中配置生产环境(使用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'));
 }

enter image description here

1 个答案:

答案 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

希望这对其他人有帮助。