Heroku部署express写的后端接口失败

用Vue写了一个前端小项目,后端采用的是Express,前端和后端分别在两个不同的目录,我自己在本地使用两个命令行窗口开启npm start联调正常。现在我把后端目录单独配置到heroku上面,发现接口没用了。。。

index.js配置好端口:
const port = process.env.PORT || 5000;

这是我的package.json:

{
  "name": "backend-api",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "node index.js",
    "server": "nodemon index.js"
  },
  "author": "Yeoman_Li",
  "license": "ISC",
  "devDependencies": {
    "body-parser": "^1.18.3",
    "express": "^4.16.4",
    "mongoose": "^5.4.0",
    "webpack": "^4.28.2"
  }
}

我现在还没部署我的前端。问题是我的后端写的简单的请求接口现在没用。。使用postman和浏览器都没用。。

这是我第一次部署我的代码到heroku,是我没注意什么么。。。

完整的index.js:

const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");

//  实例化
const app = express();

// 实现CORS(跨域)
app.all("*", (req, res, next) => {
  // 配置跨域请求头
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
  res.header(
    "Access-Control-Allow-Headers",
    "Content-type, Accept, X-Access-Token, X-Key"
  );
  if ("OPTIONS" == req.method) res.status(200).end();
  else next();
});

//  引入media请求路由
const mediaReq = require("./routes/api/mediaReq");

//  DB 配置
const db = require("./config/keys").mongoURI;

//  使用body-parser
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

//  连接DB
mongoose
  .connect(db)
  .then(() => console.log("MonogoDB Connected"))
  .catch(err => console.log(err));

//  使用路由
app.use("/api/mediaReq", mediaReq);

// 端口号
const port = process.env.PORT || 5000;

//  监听
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

完整的路由:

//  api 路由
const express = require("express");
const router = express.Router();

const mediaController = require("../../controllers/media");

// $route GET api/mediaReq/test
// @desc  返回请求的json数据
//  test
router.get("/test", (req, res) => {
  res.json({ msg: "test works" });
});

// $route GET api/mediaReq/medias || /medias/:id
// @desc  返回请求的json数据
// 查找
router.get("/medias", mediaController.allMedia);
router.get("/medias/:id", mediaController.byId);
router.post("/medias", mediaController.create);
router.delete("/medias/:id", mediaController.remove);

// 更新、删除

module.exports = router;
阅读 1.9k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题