【问题标题】:Need help deploying a RESTful API created with MongoDB Atlas and Express需要帮助部署使用 MongoDB Atlas 和 Express 创建的 RESTful API
【发布时间】:2019-09-23 01:02:10
【问题描述】:

我使用 Express 和 MongoDB Atlas 创建了一个 RESTful API,我正在尝试在 Heroku 上部署它,但由于某种原因它无法正常工作(在我的本地主机上工作)。

我想获得一些资源或建议来部署一个小型 RESTful API,以便能够从我尚未构建的前端调用它。

这是我的server.js

const express = require("express");
const app = express();
const appJs = require("./app");
const port = process.env.PORT || 3000



appJs.listen(port, function() {
  console.log("listening at " + port);
});

还有我的App.js


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

const jobRoutes = require("../api/routes/jobs");
const userRoutes = require("../api/routes/user");

mongoose.connect(
  `mongodb+srv://myname:${
    process.env.MONGO_ATLAS_PW
  }@cluster0-z4gre.mongodb.net/test?retryWrites=true`,
  {
    useNewUrlParser: true
  }
);

app.use("/uploads", express.static("uploads"));
app.use(morgan("dev"));

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept, Authorization"
  );
  if (req.method === "OPTIONS") {
    res.header("Access-Control-Allow-Methods", "PUT, POST, PATCH, DELETE, GET");
    return res.status(200).json({});
  }
  next();
});

我完成了在 Heroku 上部署的所有步骤,但是当我转到域名时收到一条错误消息。

我的 Restful API 是 JSON 格式,在开发模式下可以完美运行

这是我在访问 Heroku URL 时遇到的错误:

应用程序错误

应用程序发生错误,无法提供您的页面。如果您是应用程序所有者,请查看您的日志以获取详细信息。您可以在 Heroku CLI 中使用以下命令完成此操作

heroku logs --tail

我失败的日志:

2019-05-04T22:13:54.658480+00:00 heroku[web.1]: Process exited with status 1
2019-05-04T22:13:54.582531+00:00 app[web.1]:
2019-05-04T22:13:54.582551+00:00 app[web.1]: > cryptojobs@1.0.0 start /app
2019-05-04T22:13:54.582553+00:00 app[web.1]: > nodemon ./server/server.js --exec
2019-05-04T22:13:54.582554+00:00 app[web.1]:
2019-05-04T22:13:54.593393+00:00 app[web.1]: sh: 1: nodemon: not found
2019-05-04T22:13:54.598435+00:00 app[web.1]: npm ERR! file sh
2019-05-04T22:13:54.598644+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2019-05-04T22:13:54.598901+00:00 app[web.1]: npm ERR! errno ENOENT
2019-05-04T22:13:54.599158+00:00 app[web.1]: npm ERR! syscall spawn

nodemon 安装为devDependencies

【问题讨论】:

    标签: node.js express heroku deployment mongodb-atlas


    【解决方案1】:

    默认情况下,Heroku removes devDependencies before deploying your application。如果您在生产中需要某些东西,它可能属于您的 dependencies,而不是 devDependencies

    但无论如何,您可能不应该在生产中使用nodemon。它是一个开发工具。

    相反,请考虑将您的 start 脚本更改为使用 node 而不是 nodemon,例如

    "start": "node ./server/server.js"
    

    如果需要,您可以在编辑该文件时添加dev 脚本以使用nodemon。这样您就可以在本地计算机上使用npm run devyarn dev 来保持您的旧行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多