代码之家  ›  专栏  ›  技术社区  ›  Nafis

在create react app中配置生产环境(syntaxerror:0位置的json中的意外标记<)

  •  1
  • Nafis  · 技术社区  · 8 年前

    我想在我的应用程序中配置生产环境(使用create react app)。 也许这是一个愚蠢的问题,因为我正在搜索,有很多关于这方面的文章,但这些都没有帮助我。另外,我在create react app中使用了代码 here (生产)和 here (发展)但仍然不起作用。

    对于服务器端,我使用的是node,所有的api在react的开发模式下都运行良好。但当我使用生产模式时,它就不起作用了。

    只是回来了

    syntaxerror:位置0处的json中出现意外标记<。

    在浏览器控制台中。

    我无法在生产模式下访问服务器中的路由。

    我该怎么解决?感谢帮助。

    这是我的应用程序树,前端文件夹包含我的react代码,运行在不同的端口(服务器:3000,react:production: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 回复  |  直到 7 年前
        1
  •  2
  •   Nafis    7 年前

    我找到了我的答案,我的应用程序正在生产模式下工作,我已经部署了它。 我刚刚在服务器端代码(节点应用程序)的根目录中将这几行添加到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();
      });
    

    在这里 迈阿普 是我的项目文件夹(服务器端)的名称,并且 前端 是包含为生产创建的生成文件夹的前端文件夹的名称。(我把前端文件夹放在服务器端文件夹中)

    这个链接帮助我。 Uncaught SyntaxError: Unexpected token < #1812

    希望这能帮助别人。