将Mern应用程序部署到heroku之后的路由问题

史考特

我制作了一个运动追踪器MERN stack应用,当我运行npm start时,它在我的本地计算机上都可以正常运行(它连接到服务器,可以添加用户,运动等),但是当我将其部署到heroku时,我可以看到反应前端,但无法创建用户,练习等,有人知道为什么吗?我认为这可能是axios在我的组件之一中出现的问题,因为我使用的是localhost网址而不是heroku的网址。但是我不知道如何使用heroku之一。这是我的创建用户组件:

import React, {Component} from 'react';
import axios from 'axios';

export default class CreateUser extends Component {

    constructor(props) {
        // need to call super() for constructors of subclass in javascript
        super(props);

        // ensure that "this" is referring to the right object
        this.onChangeUsername = this.onChangeUsername.bind(this);
        this.onSubmit = this.onSubmit.bind(this);

        // use state to create variables in React
        this.state = {
            username: '',
        }
    }

    onChangeUsername(e) {
        this.setState({
          username: e.target.value
        })
    }

    onSubmit(e) {
        //prevent default HTML behaviour
        e.preventDefault();

        const user = {
          username: this.state.username,
        }

        console.log(user);

        // connect backend to frontend
        // second parameter of axios statement is the body
        // 'user' is from users.js
        axios.post('http://localhost:5000/users/add', user)
            .then(res => console.log(res.data));

        // once the user enters a username, make the username box blank again, staying on the same page
        this.setState({
            username: ''
        })
    }

    render() {
        return (
          <div>
            <h3>Create New User</h3>
            <form onSubmit={this.onSubmit}>
              <div className="form-group"> 
                <label>Username: </label>
                <input  type="text"
                    required
                    className="form-control"
                    value={this.state.username}
                    onChange={this.onChangeUsername}
                    />
              </div>
              <div className="form-group">
                <input type="submit" value="Create User" className="btn btn-primary" />
              </div>
            </form>
          </div>
        )
      }
    }

这是我的server.js

// tools we need
const express = require('express');
const cors = require('cors');
// mongoose helps connect to mongodb database
const mongoose = require('mongoose');

// setting up server
const app = express();
const port = process.env.PORT || 5000;

const path = require("path")

// cors middeware
app.use(cors());

// helps to parse json
app.use(express.json());

const exercisesRouter = require('./routes/exercises');
const usersRouter = require('./routes/users');

// whenever go to that url, it will load everything in the second parameter
app.use('/exercises', exercisesRouter);
app.use('/users', usersRouter);

mongoose.connect(process.env.MONGODB_URI || "mongodb://***:***[email protected]:27525/heroku_wgczpk05", { 
    //dealing with updates to mongodb
    useNewUrlParser: true, 
    useCreateIndex: true, 
    useUnifiedTopology: true 
}
);

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')); // relative path
    });
}

//app.use(express.static(path.join(__dirname, "client", "build")))

// starts listening and starts the server
app.listen(port, () => {
    console.log(`Server is running on port: ${port}`);
});

请注意,为了发布这篇文章,我的mongodb uri的用户名和密码已加注星标。在我自己的文件中,有用户名和密码

湿婆苏德

那么问题是,一旦将应用程序部署到Heroku或任何其他平台上,就不会出现的概念localhostlocalhost仅存在于您的本地环境中。因此,您axios应该将请求发送至

axios.post('/users/add', user)

代替

axios.post('http://localhost:5000/users/add', user)

因为所有内容都在一个端口上运行,并且axios会自动将路由附加到URL。

我的意思是,如果您的heroku应用正在运行scott.herokuapp.com(例如),

scott.herokuapp.com/users/add一旦该路由被调用,您的网址即为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我将MERN应用程序部署到Heroku出了什么问题?

来自分类Dev

MERN应用程序部署到heroku,空白页

来自分类Dev

如何将MERN堆栈应用程序部署到GitHub和Heroku?

来自分类Dev

将Rails应用程序部署到Heroku之后,没有下拉列表

来自分类Dev

MERN应用程序在部署到Heroku时无法运行“ heroku-postbuild”脚本

来自分类Dev

运行`foreman start` /将Django应用程序部署到Heroku时出现问题

来自分类Dev

将Angular 5应用程序部署到Heroku时出现问题

来自分类Dev

将Rails应用程序部署到heroku时出了点问题

来自分类Dev

将应用程序部署到heroku时预编译资产问题

来自分类Dev

如何解决此问题以将Rails应用程序部署到Heroku?

来自分类Dev

将Meteor 0.8.3应用程序部署到Heroku

来自分类Dev

将Flask应用程序部署到Heroku时出错

来自分类Dev

无法将Symfony应用程序部署到Heroku

来自分类Dev

将Node js应用程序部署到Heroku

来自分类Dev

无法将Rails应用程序部署到heroku

来自分类Dev

无法将应用程序部署到heroku

来自分类Dev

使用ActionCable将Rails应用程序部署到Heroku

来自分类Dev

将NodeJS应用程序部署到Heroku

来自分类Dev

将烧瓶应用程序部署到 heroku 错误

来自分类Dev

如何将 Kotlin 应用程序部署到 Heroku?

来自分类Dev

将 angular-universal 应用程序部署到 heroku

来自分类Dev

无法将 rails 应用程序部署到 heroku

来自分类Dev

将PHP应用程序部署到Elastic Beanstalk的问题

来自分类Dev

将应用程序部署到Heroku之后,API_URL配置变量以当前应用程序的URL开头,从而导致请求URL错误

来自分类Dev

部署到Heroku应用程序错误

来自分类Dev

将Node.js应用程序部署到Heroku的应用程序错误

来自分类Dev

部署:将Angular 2 / Node.js应用程序部署到Heroku

来自分类Dev

将应用程序部署到Azure

来自分类Dev

将应用程序部署到Azure

Related 相关文章

  1. 1

    我将MERN应用程序部署到Heroku出了什么问题?

  2. 2

    MERN应用程序部署到heroku,空白页

  3. 3

    如何将MERN堆栈应用程序部署到GitHub和Heroku?

  4. 4

    将Rails应用程序部署到Heroku之后,没有下拉列表

  5. 5

    MERN应用程序在部署到Heroku时无法运行“ heroku-postbuild”脚本

  6. 6

    运行`foreman start` /将Django应用程序部署到Heroku时出现问题

  7. 7

    将Angular 5应用程序部署到Heroku时出现问题

  8. 8

    将Rails应用程序部署到heroku时出了点问题

  9. 9

    将应用程序部署到heroku时预编译资产问题

  10. 10

    如何解决此问题以将Rails应用程序部署到Heroku?

  11. 11

    将Meteor 0.8.3应用程序部署到Heroku

  12. 12

    将Flask应用程序部署到Heroku时出错

  13. 13

    无法将Symfony应用程序部署到Heroku

  14. 14

    将Node js应用程序部署到Heroku

  15. 15

    无法将Rails应用程序部署到heroku

  16. 16

    无法将应用程序部署到heroku

  17. 17

    使用ActionCable将Rails应用程序部署到Heroku

  18. 18

    将NodeJS应用程序部署到Heroku

  19. 19

    将烧瓶应用程序部署到 heroku 错误

  20. 20

    如何将 Kotlin 应用程序部署到 Heroku?

  21. 21

    将 angular-universal 应用程序部署到 heroku

  22. 22

    无法将 rails 应用程序部署到 heroku

  23. 23

    将PHP应用程序部署到Elastic Beanstalk的问题

  24. 24

    将应用程序部署到Heroku之后,API_URL配置变量以当前应用程序的URL开头,从而导致请求URL错误

  25. 25

    部署到Heroku应用程序错误

  26. 26

    将Node.js应用程序部署到Heroku的应用程序错误

  27. 27

    部署:将Angular 2 / Node.js应用程序部署到Heroku

  28. 28

    将应用程序部署到Azure

  29. 29

    将应用程序部署到Azure

热门标签

归档