node.js - 如何使用 json-server 部署reactJS应用程序

标签 node.js json reactjs heroku json-server

我实际上已经通过以下方式部署了我的 React-app:-

  1. 运行命令:npm run build
  2. 已经有包含虚拟数据的 db.json 文件。 上下文,当我运行时 json-server --watch db.json -p 3001 -d 2000 整个react-app在本地主机上运行
  3. 使用 npm 安装了 json-server
  4. 创建了一个 server.js 文件
const jsonServer = require('json-server');
const server = jsonServer.create();
const router = jsonServer.router('db.json');
const middlewares = jsonServer.defaults();
const port = process.env.PORT || 3001;

server.use(middlewares);
server.use(router);

server.listen(port);
  • 在heroku上创建应用程序并将其推送到heroku master 由于某种原因,该网站仅在我运行 node server.js 时才有效。在我的本地计算机上,它正在向我的本地端口发出请求。 如果该命令未运行,react-app 无法向数据库执行 axios 请求。 我不知道出了什么问题。 我为此使用了以下教程:https://github.com/jesperorb/json-server-heroku
  • 我怀疑在我的代码中我创建了一个 basUrl.js 文件,其中

    export const baseUrl = 'http://localhost:3001/';
    

    我应该如何更改它来解决我的问题?

    感谢您的帮助。

    最佳答案

    您应该链接使用服务器(server.js)构建的 react 文件夹,为此添加:

    const express = require('express');
    const path = require('path');
    
    app.use(express.static(path.join(__dirname, 'build')));
    app.get('/*', function (req, res) {
        res.sendFile(path.join(__dirname, 'build', 'index.html'));
    });
    

    “build”是在 npm run build 到 React 应用文件夹中后创建的 React 应用文件夹。

    如果没有,您必须安装 pathexpress 模块。

    并且,您应该在“get”函数中获取 json-server 数据库,以将其与特定的 url 一起使用,例如:/db,就像这样:

    app.use('/db', middlewares, router);
    

    但是您应该将 /db 放在 /* 之前,以免使用 url / 打开数据库。

    因此,结果(server.js)将是:

    const jsonServer = require('json-server');
    const app = jsonServer.create();
    const path = require('path');
    const express = require('express');
    const middlewares = jsonServer.defaults();
    const router = jsonServer.router('db.json');
    const port = process.env.PORT || 3001;
    
    app.use('/db', middlewares, router);
    app.use(express.static(path.join(__dirname, 'build')));
    
    app.get('/*', function (req, res) {
        res.sendFile(path.join(__dirname, 'build', 'index.html'));
    });
    
    server.listen(port);
    

    关于node.js - 如何使用 json-server 部署reactJS应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63122706/

    相关文章:

    javascript - Node.js Bluebird Promise 提示 "Converting circular structure to JSON"

    php - 如何将php的json值传递给js

    javascript - NodeJS,通过套接字控制台发送缓冲区后说它不是缓冲区

    javascript - 使用 ES6 模块时,设置了 --watch 标志的 Mocha 会引发错误

    python - 如何使用Python获取Json的父元素

    json - Spring MVC 测试框架 - JSON 端点仅在测试中返回 406

    reactjs - React 中的 Context 始终是空对象

    javascript - 意外的 token 导入(React JS 和 Babel)

    arrays - React onClick 从 JSON 数组传递对象 ID

    node.js - meteor 错误 : EACCES: permission denied, rmdir 'build'